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

Reply via email to