[原创]发现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;
}
...