ID: 32334
Updated by: [EMAIL PROTECTED]
Reported By: mk at peytz dot dk
-Status: Verified
+Status: Closed
Bug Type: Zend Engine 2 problem
Operating System: *
PHP Version: 5CVS-2005-04-04
New Comment:
This bug is already fixed in CVS HEAD and PHP_5_0.
See Zend/tests/object_handlers.phpt
Previous Comments:
------------------------------------------------------------------------
[2005-04-04 00:00:56] [EMAIL PROTECTED]
Changed the var_export() -> var_dump() and got this with
latest CVS:
object(Setter)#1 (2) {
["_fields:private"]=>
array(2) {
["a"]=>
int(1)
["b"]=>
int(2)
}
["_changedFields:private"]=>
array(2) {
[0]=>
string(1) "a"
[1]=>
&UNKNOWN:0
}
}
------------------------------------------------------------------------
[2005-04-01 13:51:43] mk at peytz dot dk
Still present in 5.0.4 but now only with NULL values.
------------------------------------------------------------------------
[2005-03-19 12:38:36] [EMAIL PROTECTED]
Can't reproduce *your* behaviour with latest 5.0.x & 5.1 CVS.
But some issue really exists, as I get NULL instead of 'b' with both
branches.
------------------------------------------------------------------------
[2005-03-16 13:29:45] mk at peytz dot dk
Description:
------------
When setting variable variable values on a instance of a class with an
overloading __set function changing another instance variable goes
wrong.
(I'm reporting it for version 5.0.3 because the current cvs snapshot
would not compile.)
Reproduce code:
---------------
http://dev.peytz.dk/~mk/setter.php
<?php
class Setter
{
private $_fields = array(); // the data fields
private $_changedFields = array(); // list of changed fields
function __set($name, $value)
{
// set value
$this->_fields[$name] = $value;
// add to list of changed fields
$this->_changedFields[] = $name;
}
}
$foo = new Setter;
$foo->a = 1;
$var = "b";
$foo->$var = 2;
var_export($foo);
?>
Expected result:
----------------
class Setter {
private $_fields =
array (
'a' => 1,
'b' => 2,
);
private $_changedFields =
array (
0 => 'a',
1 => 'b',
);
}
Actual result:
--------------
class Setter {
private $_fields =
array (
'a' => 1,
'b' => 2,
);
private $_changedFields =
array (
0 => 'a',
1 => '���',
);
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32334&edit=1