ID: 22749 Updated by: [EMAIL PROTECTED] Reported By: eric at evilwalrus dot com -Status: Open +Status: Bogus Bug Type: Documentation problem -Operating System: Windows XP +Operating System: * -PHP Version: 5CVS-2003-03-17 (dev) +PHP Version: Irrelevant New Comment:
There are no namespaces anymore. (PHP 5) Previous Comments: ------------------------------------------------------------------------ [2003-03-29 14:59:55] eric at evilwalrus dot com This would be why I thought it was by design. That works for me. I just changed the $new = new TestClass2(); to $new = new ::TestClass2(); and it worked perfectly. Thanks. ------------------------------------------------------------------------ [2003-03-29 04:15:16] [EMAIL PROTECTED] Thanks to Marcus who brought light into this: You access classes from the global namespace by ommiting the namespace-name part: new ::TestClass2(); is the proper syntax. Same for my exception extending problem: php -r 'namespace myscope { class myexception extends ::exception { } }' Marking as a documentation problem (it's not in ZEND_CHANGES even). ------------------------------------------------------------------------ [2003-03-27 17:58:25] [EMAIL PROTECTED] Also pretty annoying if you want to declare a class extending the main exception class in your namespace. It simply doesn't work because its not "seen": $ php -r 'class myexception extends exception { } ' [no error, works] $ php -r 'namespace myscope { class myexception extends exception { } }' Command line code(1) : Fatal error - Class 'exception' not found I couldn't find a way to reference the global namespace. ------------------------------------------------------------------------ [2003-03-17 11:33:25] eric at evilwalrus dot com If I have the following script, the class that is defined before the namespace cannot be called from within a class in the namespace. <?php class TestClass2 { function __construct() { print "TestClass2\n"; } } namespace Test { function newClass () { $new = new TestClass(); $new->newClass(); } class TestClass { function __construct() { print "TestClass\n"; } function newClass () { $new = new TestClass2(); } } } Test::newClass(); //$new = new TestClass2(); ?> This example will show the error "Fatal error: Class 'testclass2' not found in c:\usr\test.php on line 26" I'm assuming that this is done by design... but I would think that PHP would look for the class outside of the namespace since it is defined before the namespace. If you use the commented out line $new = new TestClass2; instead of the Test::newClass(); then it works properly, and the TestClass2 construct is called. As I said, I think this is done by design and isn't a bug... but I thought I would submit it because I'm not for sure. Any explination though would be very helpful to me. Thanks. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22749&edit=1 -- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php