PHP 4.0 Bug #9481 Updated: Passing out class property by reference problem
| From: | stas@php.net | 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