__destruct有多可靠?

Ale*_*lex 8 php arrays

是否存在不会调用此方法的情况?

我想在缓存对象被销毁之前将一个重要的变量存储到持久缓存中.这个变量在页面中多次使用,所以每次变量更改时我都不想用它来更新缓存...

Vyk*_*tor 14

我们上课了:

class A {
    public function __construct(){
        echo "Construct\n";
    }

    public function __destruct(){
        echo "Destruct\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

和测试代码:

$test = new A();
die( "Dead\n");  // Will output Construct; dead; Destruct

$test = new A();
throw new Exception("Blah\n"); // Construct, Fatal error (no destruct)

$test = new A();
require_once( 'invalid_file.php'); // Construct, Fatal error (no destruct)
Run Code Online (Sandbox Code Playgroud)

所以基本上:当不会调用析构函数时会出现(致命错误).

啊,这个问题与这个问题的答案相同:什么时候不会在PHP中调用__destruct?(+/-)

  • 就个人而言,我认为编程错误比PHP不可靠更多.设计糟糕,无法捕获抛出的异常. (3认同)