ID: 30140
Updated by: [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
It's definitely duplicate for bug #30934.
------------------------------------------------------------------------
[2005-05-09 11:34:31] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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