#32334 [Opn->Fbk]: __set acts unexpected with variable variables

From: 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

« previous php.bugs (#75478) next »