#30140 [Asn->Csd]: Problem with array in static properties

From: Date: Wed, 08 Jun 2005 13:22:21 +0000
Subject: #30140 [Asn->Csd]: Problem with array in static properties
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-80049@lists.php.net to get a copy of this message
ID: 30140 Updated by: dmitry@php.net Reported By: guth at fiifo dot u-psud dot fr -Status: Assigned +Status: Closed Bug Type: Zend Engine 2 problem Operating System: * PHP Version: 5CVS-2005-05-07 Assigned To: dmitry New Comment: Fixed in CVS HEAD and PHP_5_0. Previous Comments: ------------------------------------------------------------------------ [2005-06-08 11:18:53] dmitry@php.net 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" ------------------------------------------------------------------------ [2005-05-17 16:27:37] stas@php.net It's definitely duplicate for bug #30934. ------------------------------------------------------------------------ [2005-05-09 11:34:31] sniper@php.net This same thing happens with boolean too. All other types behave correctly (or incorrectly, not sure anymore :) Andi, (or Dmitry maybe?) can you look into this? ------------------------------------------------------------------------ [2005-04-05 23:24:10] tony2001@php.net Yet another duplicate of bug #30934. ------------------------------------------------------------------------ [2004-09-18 17:02:22] 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) { } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30140&edit=1

« previous php.bugs (#80049) next »