【问题标题】:What happens if you call a constructor from a destructor?如果从析构函数调用构造函数会发生什么?
【发布时间】:2012-05-10 05:17:51
【问题描述】:

从 __destruct() 调用 __construct() 函数,

<?php

public function __construct() {
    echo "Hi";
}

public function __destruct() {
    $this->__construct();
}

?>

会造成无限循环吗?

【问题讨论】:

  • 你试过了吗?这是找出答案的好方法。
  • 它打印了两次,仅此而已......但它是否仍在后台运行?有什么方法可以检查吗?
  • @Craftero 为什么会这样?您不是在创建一个对象(被销毁......),您只是在调用一个函数。

标签: php constructor destructor infinite-loop


【解决方案1】:

不,但这会:

class Test {

    public function __construct() {
        echo "Hi";
    }

    public function __destruct() {
         new Test();
    }

}

new Test();

示例:http://ideone.com/94XUg

【讨论】:

    【解决方案2】:

    不,不会。 __construct 只是普通函数,直接调用而不是使用new ClassName;

    【讨论】:

    • +1,哦,但是我看到很少有代码可以通过调用 __construct 来调用父级的构造函数
    • @Craftero 没关系,因为你在已经创建的对象上调用了 parent 的方法,而不是创建一个新对象
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2018-07-23
    • 2011-05-29
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多