[原创]发现php5自动引用对象失败的bug 2007-12-07 15:36

字号:    

查看php5手册我们知道一个对象变量被创建以后自动返回引用,但是由于未知的原因,在函数/方法中的对象参数最好使用&符号将对象的引用显式的传递过来,否则如果没有用&符号在某些未知的情况下会发生对象的引用传递失败的情况(传递的是对象复制而不是对象引用)。

我自己开发时遇到过如下例子的对象引用传递失败的情况,但是在其他大多数函数/方法中是可以不用&符号而直接正确传递对象的引用的。

例子:

...

/* 如果方法f1()和f2()中都没有显式引用参数$objVar1(即去掉参数中的&符号)则在f2()得到的是f1()传来的对象复制而非对象引用,那么我想通过f2()修改f1()中对象变量$objVar1的目的也就无法达到了。 */

public function f1(&$objVar1) {    /* $objVar1是个对象 */

    f2($objVar1);

}

public function f2(&$objVar1) {

    $objVar1 = f3();    /* 方法f3()返回一个对象 */

}

public function f3() {

    $objVar2 = new class1();

    $objVar2->p1 = 'test';

    return $objVar2;

}

...

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
网易公司版权所有 ©1997-2009