objects passed as reference in php5

From: 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!

« previous php.internals (#11998) next »