PHP 4.0 Bug #9481 Updated: Passing out class property by reference problem

From: Date: Thu, 08 Mar 2001 11:58:37 +0000
Subject: PHP 4.0 Bug #9481 Updated: Passing out class property by reference problem
Groups: php.dev 
Request: Send a blank email to php-dev+get-48235@lists.php.net to get a copy of this message
ID: 9481 Updated by: stas Reported By: phil@kusala.com Old-Status: Open Status: Closed Bug Type: Scripting Engine problem Assigned To: Comments: This is not a bug. Please read the "References explained" part in the manual. When you have $a =& $b and you do $a =& $c, you don't make a and b be references to c, you make only $a bound to $c and unbound from $b. So when you did $refObj = &$this->sValue $refObj stopped being reference to call parameter and became reference to $this->sValue. There's no real way to make "other" referenced value to be rebound to some new value. Previous Comments: --------------------------------------------------------------------------- [2001-02-27 10:42:34] phil@kusala.com <? function xmpdump($xValue, $sLabel="") { echo "$sLabel<xmp>"; var_dump($xValue); echo "</xmp>"; } class test { var $sValue; var $Count = 0; function getTest(&$refObj) { if (isset($this->sValue)) { $refObj = &$this->sValue; xmpdump($refObj, "Reference before being passed back"); return; } else { $refObj = "phil".$this->Count; $this->Count++; $this->sValue = &$refObj; xmpdump($refObj, "Value before being passed back"); return; } } } $tst = new test(); $tst->getTest($tstObj0); xmpdump($tstObj0, "Value after being passed back"); $tst->getTest($tstObj1); xmpdump($tstObj1, "Refence after being passed back"); ?> The dump of $tstObj1 is NULL, despite the dump of $refObj immediately before it in the function working correctly. --------------------------------------------------------------------------- ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=9481&edit=2

« previous php.dev (#48235) next »