ID: 22395 Updated by: [EMAIL PROTECTED] Reported By: andrew at evilwalrus dot com -Status: Assigned +Status: Wont fix Bug Type: Zend Engine 2 problem Operating System: WinXP PHP Version: 5CVS-2003-02-24 (dev) Assigned To: zeev New Comment:
Namespaces no longer supported, not a bug anymore. :) Previous Comments: ------------------------------------------------------------------------ [2003-04-18 18:25:00] thekid at thekid dot de This can be fixed with this small extra check: Index: Zend/zend_compile.c =================================================================== RCS file: /repository/ZendEngine2/zend_compile.c,v retrieving revision 1.412 diff -u -r1.412 zend_compile.c --- Zend/zend_compile.c 11 Apr 2003 17:30:41 -0000 1.412 +++ Zend/zend_compile.c 18 Apr 2003 23:24:12 -0000 @@ -3417,6 +3417,10 @@ zend_op *opline; zend_str_tolower(ns_name->u.constant.value.str.val, ns_name->u.constant.value.str.len); + if (!(strcmp(ns_name->u.constant.value.str.val, "main") && strcmp(ns_name->u.constant.value.str.val, "self") && + strcmp(ns_name->u.constant.value.str.val, "parent"))) { + zend_error(E_COMPILE_ERROR, "Cannot use '%s' as namespace name as it is reserved", ns_name->u.constant.value.str.val); + } if(zend_hash_find(&CG(global_namespace).class_table, ns_name->u.constant.value.str.val, ns_name->u.constant.value.str.len+1, (void **)&pns) == SUCCESS) { ns = *pns; ------------------------------------------------------------------------ [2003-02-24 11:06:20] [EMAIL PROTECTED] Assigning to Zeev so that this doesn't get lost. ------------------------------------------------------------------------ [2003-02-24 10:02:58] andrew at evilwalrus dot com The following code should (theoretically) generate a fatal error, as it overwrites a predefined namespace (tested on 'parent' and 'self' namespaces: <?php namespace parent { class foo { private $data; function __construct($data) { $this->data = $data; } function debug() { print $this->data; } } } $foo = new parent::foo('Hello World!'); $foo->debug(); ?> ---------------------------------------------------- I don't think this is done by design due to the fact that the predefined namespaces are in place to prevent this, and also for other uses. ~ Andrew Heebner ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22395&edit=1