ID: 21669 Updated by: [EMAIL PROTECTED] Reported By: slowbyte at hot dot ee -Status: Verified +Status: Analyzed Bug Type: Zend Engine 2 problem Operating System: Debian Linux 3.0r0 PHP Version: 5CVS-2003-01-15 (dev) New Comment:
This is due to dynamic_class_name chain of rules, which does not allow property references. Somebody with more parser knowledge (which means Zeev or Andi, I guess :) should look at it. Previous Comments: ------------------------------------------------------------------------ [2003-03-02 05:15:28] [EMAIL PROTECTED] Verified with latest CVS. ------------------------------------------------------------------------ [2003-02-18 12:51:16] yoglets at hotmail dot com FWIW, this problem is still present in a post-nested-class ZE2 build: <?php namespace Foo { class Bar { } } $name = 'Foo::Bar'; $obj = new $name; print_r($obj); ?> ------------------------------------------------------------------------ [2003-01-28 19:55:58] yoglets at hotmail dot com Don't know if this is the same issue or not, but it's certainly related. You can't use $obj = new $name for nested classes either. For example: <?php class Foo { class Bar { } } $obj1 = new Foo; // works $obj2 = new Foo::Bar; // works $name = 'Foo'; $obj3 = new $name; // works $name = 'Foo::Bar'; $obj4 = new $name; // Fatal error: Class 'foo::bar' not found ?> ------------------------------------------------------------------------ [2003-01-15 11:56:13] slowbyte at hot dot ee The following snippet is a parse error in PHP5-ZE2 (used to work on earlier versions). This feature is also used in Smarty templates. <?php class Test { function say_hello() { echo "Hello world"; } } class Factory { var $name = "Test"; function create() { $obj = new $this->name; /* Parse error */ return $obj; } } $factory = new Factory; $test = $factory->create(); $test->say_hello(); ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21669&edit=1