Re: objects passed as reference in php5
| From: | Ron Korving | Date: | Sun, 08 Aug 2004 11:14:55 +0000 |
| Subject: | Re: objects passed as reference in php5 | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-11999@lists.php.net to get a copy of this message | ||
i think the object will only cease to exist when all references to it are
gone
"Curt Zirzow" <curt@php.net> wrote in message
news:20040808022353.GG6522@bagend.shire...
>
> 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!