class TestClass {
public function __construct(){
echo "constructor function called!<br>";
}
public static function test(){
echo "static function called!<br>";
}
public function __destruct(){
echo "destructor function called!<br>";
}
}
TestClass::test(); // does not call neither the constructor nor the destructor
3条答案
按热度按时间z6psavjg1#
die()
或exit()
终止,析构函数也会执行:即使使用exit()停止脚本执行,析构函数也会被调用。在析构函数中调用exit()将阻止其余的关闭例程执行。
总而言之,它看起来相当可靠。
但是,在析构函数中进行清理之外的其他操作的缺点是,在析构函数中的选项有些有限,不能再抛出异常(除非你在析构函数中再次捕获它们),你不能输出任何错误消息,你不能依赖其他物体的存在我在使用析构函数方面没有很深的经验,但我不确定你打算做的是不是一个可行的想法。
nr7wwzry2#
我只想补充一点,如果你在一个析构函数中有一个致命的错误,它可以阻止其他析构函数的执行。
uurity8g3#
当在类中静态调用方法时,不会调用析构函数(以及构造函数);例如:
但是如果你示例化了这个类,构造函数和析构函数都会像预期的那样被调用。
但是,正如公认的答案所指出的,它们不会在达到时间限制、致命或解析错误和/或其他解释/崩溃时被调用。