ID:               21669
 Comment by:       yoglets at hotmail dot com
 Reported By:      slowbyte at hot dot ee
 Status:           Open
 Bug Type:         Zend Engine 2 problem
 Operating System: Debian Linux 3.0r0
 PHP Version:      5CVS-2003-01-15 (dev)
 New Comment:

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);

?>


Previous Comments:
------------------------------------------------------------------------

[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

Reply via email to