]> granicus.if.org Git - php/commitdiff
- MFH Bugfix #28442
authorMarcus Boerger <helly@php.net>
Thu, 10 Mar 2005 13:24:33 +0000 (13:24 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 10 Mar 2005 13:24:33 +0000 (13:24 +0000)
Zend/tests/bug28442.phpt [new file with mode: 0755]
Zend/zend_compile.c

diff --git a/Zend/tests/bug28442.phpt b/Zend/tests/bug28442.phpt
new file mode 100755 (executable)
index 0000000..1237357
--- /dev/null
@@ -0,0 +1,65 @@
+--TEST--
+Bug #28442 (Changing a static variables in a class changes it across sub/super classes.)
+--FILE--
+<?php
+
+class ClassA
+{
+   static $prop;
+}
+
+class ClassB extends ClassA
+{
+   static $prop;
+}
+
+class ClassC extends ClassB
+{
+}
+
+echo "===INIT===\n";
+ClassA::$prop = 'A';
+ClassB::$prop = 'B';
+ClassC::$prop = 'C';
+var_dump(ClassA::$prop);
+var_dump(ClassB::$prop);
+var_dump(ClassC::$prop);
+
+echo "===SetA===\n";
+ClassA::$prop = 'A2';
+var_dump(ClassA::$prop);
+var_dump(ClassB::$prop);
+var_dump(ClassC::$prop);
+
+echo "===SetB===\n";
+ClassB::$prop = 'B2';
+var_dump(ClassA::$prop);
+var_dump(ClassB::$prop);
+var_dump(ClassC::$prop);
+
+echo "===SetC===\n";
+ClassC::$prop = 'C2';
+var_dump(ClassA::$prop);
+var_dump(ClassB::$prop);
+var_dump(ClassC::$prop);
+
+?>
+===DONE===
+--EXPECTF--
+===INIT===
+string(1) "A"
+string(1) "C"
+string(1) "C"
+===SetA===
+string(2) "A2"
+string(1) "C"
+string(1) "C"
+===SetB===
+string(2) "A2"
+string(2) "B2"
+string(2) "B2"
+===SetC===
+string(2) "A2"
+string(2) "C2"
+string(2) "C2"
+===DONE===
index ad62a3016105398416ef5287d4a09089dc60e76f..5053677bc2e9bc08ac23284a582c5f7bfd8b1c5e 100644 (file)
@@ -1908,12 +1908,6 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro
                                zend_hash_del(&ce->default_properties, prot_name, prot_name_length+1);
                        }
                        pefree(prot_name, ce->type & ZEND_INTERNAL_CLASS);
-               } else if (!(child_info->flags & ZEND_ACC_PRIVATE) && (child_info->flags & ZEND_ACC_STATIC)) {
-                       char *prop_name, *tmp;
-
-                       zend_unmangle_property_name(child_info->name, &tmp, &prop_name);
-                       zend_error(E_COMPILE_ERROR, "Cannot redeclare property static %s %s::$%s in class %s", 
-                               zend_visibility_string(child_info->flags), parent_ce->name, prop_name, ce->name);
                }
                return 0;       /* Don't copy from parent */
        } else {