记载一个phper的历程!http://phperwuhan.blog.phpchina.com

[原创]发现php5自动引用对象失败的bug

上一篇 / 下一篇  2007-12-07 15:58:10 / 个人分类:php

来源:http://phperwuhan.blog.163.com/blog/static/41142602200711733628673/edit/

查看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;

}

...

 


TAG: php

引用 删除 站长向前   /   2008-05-12 11:40:01
5
手册里一句引擎足够聪明,知道如何处理。
差点把我笑死。
只希望zend把自己的路走好,别发展了php也限制了php。
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar