objects passed as reference in php5
| From: | Curt Zirzow | Date: | Sun, 08 Aug 2004 02:23:53 +0000 |
| Subject: | objects passed as reference in php5 | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-11998@lists.php.net to get a copy of this message | ||
I'm trying to document how objects are passed to functions in php5,
but am running into some troubles.
In the code below the object appears to be a reference but when the
original object is destoyed it still somehow exists. Can someone
explain how this is? I was going to report a bug on this but using
the traditional &$obj usage it works perfectly fine.
class Test {
public $object = null;
public $object1 = null;
function SetVarVal($obj) {
$this->object = $obj;
}
function SetVarRef(&$obj) {
$this->object1 = &$obj;
}
}
$obj1 = new StdClass();
$obj2 = new Test();
$obj2->SetVarVal($obj1);
$obj2->SetVarRef($obj1);
$obj1->foo = 'test'; /* show how obj1's is a ref */
$obj1 = null; /* destroy object */
var_dump($obj2->object); /* still has object with ->foo */
var_dump($obj2->object1); /* NULL */
Curt
--
First, let me assure you that this is not one of those shady pyramid schemes
you've been hearing about. No, sir. Our model is the trapezoid!