ID: 9481
User Update by: [EMAIL PROTECTED]
Status: Closed
Bug Type: Scripting Engine problem
Description: Passing out class property by reference problem

You can get round the above problem somewhat using: 

function foo (&$aVar) 
$aVar['value'] =& $GLOBALS["baz"]; 

$bar['value'] is now a reference to $GLOBALS["baz"] as you would expect.

Previous Comments:

[2001-03-08 06:58:36] [EMAIL PROTECTED]
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.


[2001-02-27 10:42:34] [EMAIL PROTECTED]
        function xmpdump($xValue, $sLabel="")
                echo "$sLabel<xmp>";
                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 
                                $refObj = "phil".$this->Count;
                                $this->sValue = &$refObj;
                                xmpdump($refObj, "Value before being passed back");
        $tst = new test();

        xmpdump($tstObj0, "Value after being passed back");
        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.


Full Bug description available at:

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to