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!

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to