#50606 [NEW]: strange behavior of reference and ? operator

From: Date: Tue, 29 Dec 2009 13:02:29 +0000
Subject: #50606 [NEW]: strange behavior of reference and ? operator
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-146183@lists.php.net to get a copy of this message
From: grzegorz at heex dot pl Operating system: Win XP PHP version: 5.3.1 PHP Bug Type: Scripting Engine problem Bug description: strange behavior of reference and ? operator Description: ------------ That code works: class A{ private $data; public function __construct() { $this->data = new stdClass(); } public function & __get($property) { if (isset($this->data->$property)) { return $this->data->$property; } return null; } public function __set($property,$value) { $this->data->$property = $value; } } function chgTxt(& $txt) { $txt = '-----'; } $o = new A(); $o->int = 1; $o->int++; echo $o->int,'<br />';//result: 2 - reference in A::get() works fine $o->txt = 'string'; chgTxt($o->txt); echo $o->txt,'<br />';//result: '----' - reference works Reproduce code: --------------- That code doesn't work: class A{ private $data; public function __construct() { $this->data = new stdClass(); } public function & __get($property) { return isset($this->data->$property) ? $this->data->$property : null; } public function __set($property,$value) { $this->data->$property = $value; } } function chgTxt(& $txt) { $txt = '-----'; } $o = new A(); $o->int = 1; $o->int++; echo $o->int,'<br />';//result: 2 - reference in A::get() works fine $o->txt = 'string'; chgTxt($o->txt); echo $o->txt,'<br />';//result: 'string' - reference doesn't work Expected result: ---------------- 2 ---- Actual result: -------------- 2 string -- Edit bug report at http://bugs.php.net/?id=50606&edit=1 -- Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=50606&r=trysnapshot52 Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=50606&r=trysnapshot53 Try a snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=50606&r=trysnapshot60 Fixed in SVN: http://bugs.php.net/fix.php?id=50606&r=fixed Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=50606&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=50606&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=50606&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=50606&r=needscript Try newer version: http://bugs.php.net/fix.php?id=50606&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=50606&r=support Expected behavior: http://bugs.php.net/fix.php?id=50606&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=50606&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=50606&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=50606&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=50606&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=50606&r=dst IIS Stability: http://bugs.php.net/fix.php?id=50606&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=50606&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=50606&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=50606&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=50606&r=mysqlcfg

« previous php.bugs (#146183) next »