$assigned   =  $instance; //把对象的地址传给变量$assigned
$reference  =& $instance;//把变量$instance的地址传给$reference,就是变量引用.当$instance为null,$reference也为null,但对象不为null.

解决方案 »

  1.   

    可是$instance它是对象啊?$instance这个变量如何理解呢?谢谢
      

  2.   

    以C的观点看,$instance是变量,它有它自己的地址(比如是1000),而它存的不是具体值,是对象的地址(比如是2000),相当于指针(*instance)。
    所以
    $assigned       =     $instance;   //新建object变量$assigned,值为2000,指向对象
    $reference     =&   $instance;     //新建object变量$reference,值为1000,指向变量$instance.
      

  3.   

    谢谢,湖水清澈,
    你说的我明白,可是如果是变量,$instance->var = '$assigned will have this value';
    下面这句如何成立,还有你看这个
    <?php
    $bar =& new fooclass();
    $foo =& find_var($bar);
    ?> 
    对象的引用
      

  4.   

    1.$bar =& new fooclass();
    [摘]:
    PHP5使用了Zend引擎II,对象被储存于独立的结构Object Store中,而不像其它一般变量那样储存于Zval中(在PHP4中对象和一般变量一样存储于Zval)。在Zval中仅存储对象的指针而不是内容(value)。当我们复制一个对象或者将一个对象当作参数传递给一个函数时,我们不需要复制数据。仅仅保持相同的对象指针并由另一个zval通知现在这个特定的对象指向的Object Store。由于对象本身位于Object Store,我们对它所作的任何改变将影响到所有持有该对象指针的zval结构----表现在程序中就是目标对象的任何改变都会影响到源对象。.这使PHP对象看起来就像总是通过引用(reference)来传递,因此PHP中对象默认为通过“引用”传递,你不再需要像在PHP4中那样使用&来声明。2.$foo =& find_var($bar);
    //这种写法实际上是对函数返回值的引用
    $a = 'original value';
    $foo = & find_var();
    $foo = 'new value';
    echo $a;
    function & find_var()
    {
         global $a;
         return $a;
    }
      

  5.   

    谢谢,原来php5是可以省略的,但是怪我笨还是不明白,如果是变量可以这样吗?为啥把它看成变量
    [code=PHP]$reference     =&   $instance
    $instance-> var   =   '$assigned   will   have   this   value'; [/code]
      

  6.   

    不要把$instance当成对象本身,它只是一个实例化对象的名字,你通过这个名字来访问具体对象。