有个问题,对象在什么时候会自动销毁,脚本执行完毕当然就自动销毁了,可是如果我在一个函数里面创建了一个对象a,那么当这个函数执行完毕时,对象a会自动销毁么?

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2010-02-01 14:35:24 编辑
      

  2.   

    参考:
    http://school.itzcn.com/special-spid-30.html
    上面讲解的比较详细,
    希望对楼主有所帮助。
      

  3.   

    准确地说,是在垃圾回收器运行之后回收.....一般情况下没问题,函数结束后会回收...
    不过有兴趣的可以运行一下这个程序: (<php5.3, bugs.php.net上说已经在5.3修改了这个问题)<?phpclass A {
        function __construct () {
            $this->b = new B($this);
        }
        function __destruct () {
            $this->b->__destruct();
        }
    }class B {
        function __construct ($parent = NULL) {
            $this->parent = $parent;
        }
        function __destruct () {
            unset($this->parent);
        }
    }function test(){
    for ($i = 0 ; $i < 10000 ; $i++) {
        $a = new A();
        //$a->__destruct();   // 看看这行注释与不注释有何不同
    }
    }test();
    echo number_format(memory_get_usage());
    注释和不注释上面那行的结果是完全不同的
      

  4.   

    函数运行完就收回了。建议看看php的垃圾回收机制。