#32334 [Opn->Fbk]: __set acts unexpected with variable variables
| From: | sniper@php.net | Date: | Fri, 18 Mar 2005 18:23:13 +0000 |
| Subject: | #32334 [Opn->Fbk]: __set acts unexpected with variable variables | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-75478@lists.php.net to get a copy of this message | ||
ID: 32334
Updated by: sniper@php.net
Reported By: mk at peytz dot dk
-Status: Open
+Status: Feedback
Bug Type: Zend Engine 2 problem
Operating System: Linux
PHP Version: 5.0.3
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
Previous Comments:
------------------------------------------------------------------------
[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