|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2004-09-18 17:02 UTC] guth at fiifo dot u-psud dot fr
Description:
------------
[ sorry for english ]
There is a problem with static properties initialized as
an array in classes.
In the following code, if you replace "public static $test
= array();" by "public static $test;" or if you initialize
the property with not an array ("public static $test =
12;" for example), it works as expected.
Reproduce code:
---------------
<?
class A {
public static $test = array();
public function set($var) {
self::$test = $var;
}
public static function view() {
var_dump(self::$test);
}
}
class B extends A {
public static function view() {
var_dump(self::$test);
}
}
$class = new B;
$class->set(array('key' => 'value'));
A::view();
B::view();
?>
Expected result:
----------------
array(1) { ["key"]=> string(5) "value" }
array(1) { ["key"]=> string(5) "value" }
Actual result:
--------------
array(1) { ["key"]=> string(5) "value" }
array(0) { }
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 22:00:01 2025 UTC |
No this is another bug. The problem is in zval_update_constant(). Reproduce code: --------------- <?php class A { public static $test1 = true; public static $test2 = array(); public static $test3 = "str"; } class B extends A { } A::$test1 = "x"; A::$test2 = "y"; A::$test3 = "z"; var_dump(A::$test1); var_dump(A::$test2); var_dump(A::$test3); var_dump(B::$test1); var_dump(B::$test2); var_dump(B::$test3); ?> Expected result: ---------------- string(1) "x" string(1) "y" string(1) "z" string(1) "x" string(1) "y" string(1) "z" Actual result: -------------- string(1) "x" string(1) "y" string(1) "z" bool(true) array(0) { } string(1) "z"