#32334 [NEW]: __set acts unexpected with variable variables
From: mk at peytz dot dk Operating system: Linux PHP version: 5.0.3 PHP Bug Type: Zend Engine 2 problem Bug description: __set acts unexpected with variable variables 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 bug report at http://bugs.php.net/?id=32334edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=32334r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=32334r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=32334r=trysnapshot51 Fixed in CVS:http://bugs.php.net/fix.php?id=32334r=fixedcvs Fixed in release:http://bugs.php.net/fix.php?id=32334r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=32334r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=32334r=needscript Try newer version: http://bugs.php.net/fix.php?id=32334r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=32334r=support Expected behavior: http://bugs.php.net/fix.php?id=32334r=notwrong Not enough info: http://bugs.php.net/fix.php?id=32334r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=32334r=submittedtwice register_globals:http://bugs.php.net/fix.php?id=32334r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=32334r=php3 Daylight Savings:http://bugs.php.net/fix.php?id=32334r=dst IIS Stability: http://bugs.php.net/fix.php?id=32334r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=32334r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=32334r=float No Zend Extensions: http://bugs.php.net/fix.php?id=32334r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=32334r=mysqlcfg
#32334 [Opn]: __set acts unexpected with variable variables
ID: 32334 User updated by: mk at peytz dot dk Reported By: mk at peytz dot dk Status: Open Bug Type: Zend Engine 2 problem Operating System: Linux -PHP Version: 5CVS-2005-03-19 +PHP Version: 5.0.4 New Comment: Still present in 5.0.4 but now only with NULL values. Previous Comments: [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-19 07:44:07] mk at peytz dot dk But the problem persist with the CVS snapshot (which now compiles again). [2005-03-18 19:23:13] [EMAIL PROTECTED] 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 [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=32334edit=1
#32334 [Fbk-Opn]: __set acts unexpected with variable variables
ID: 32334 User updated by: mk at peytz dot dk Reported By: mk at peytz dot dk -Status: Feedback +Status: Open Bug Type: Zend Engine 2 problem Operating System: Linux -PHP Version: 5.0.3 +PHP Version: 5CVS-200503190530 New Comment: But the problem persist with the CVS snapshot (which now compiles again). Previous Comments: [2005-03-18 19:23:13] [EMAIL PROTECTED] 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 [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=32334edit=1