如果我实例化了一个对象,是否有可能在 php 关闭之前触发一个方法?例子
class foo{
public function sayBye(){
echo 'bye';
}
}
$obj = new foo();
$obj2 = new foo();
die();
有没有办法可以自动触发 sayBye 功能?(换句话说,该代码将输出“byebye”)
sayBye()
在析构函数中调用 to怎么样?
如果我实例化了一个对象,是否有可能在 php 关闭之前触发一个方法?例子
有。查看__destruct()了解更多信息。但是请注意,这是不可靠的:如果您的脚本包含die()
、未捕获的异常、致命错误,__destruct()
则不会调用 。
您可以使用它,但要明智地使用它;)
编辑:当你打电话时,它似乎__destruct( )
会被调用exit;
。尽管如此,警告仍然适用于其他情况。
我能看到的最简单的方法是向你的类添加一个析构函数。
class foo{
public function sayBye(){
echo 'bye';
}
public function __destruct(){
$this->sayBye();
}
}
这会做什么?当脚本执行完成或调用 unset($object) 时,您将执行 __destruct() 中的代码。它可能不适用于 die(),因为这会在脚本完成之前匆忙停止脚本。