1

如果我实例化了一个对象,是否有可能在 php 关闭之前触发一个方法?例子

class foo{
   public function sayBye(){
       echo 'bye';
   }
}
$obj = new foo();
$obj2 = new foo();
die();

有没有办法可以自动触发 sayBye 功能?(换句话说,该代码将输出“byebye”)

4

4 回答 4

4

查看register_shutdown_function函数。

于 2012-04-19T11:05:02.120 回答
2

sayBye()在析构函数中调用 to怎么样?

http://php.net/manual/en/language.oop5.decon.php

于 2012-04-19T11:04:32.997 回答
1

如果我实例化了一个对象,是否有可能在 php 关闭之前触发一个方法?例子

有。查看__destruct()了解更多信息。但是请注意,这是可靠的:如果您的脚本包含die()、未捕获的异常、致命错误,__destruct()不会调用 。

您可以使用它,但要明智地使用它;)

编辑:当你打电话时,它似乎__destruct( )会被调用exit;。尽管如此,警告仍然适用于其他情况。

于 2012-04-19T11:05:55.277 回答
0

我能看到的最简单的方法是向你的类添加一个析构函数。

class foo{
   public function sayBye(){
       echo 'bye';
   }

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

这会做什么?当脚本执行完成或调用 unset($object) 时,您将执行 __destruct() 中的代码。它可能不适用于 die(),因为这会在脚本完成之前匆忙停止脚本。

于 2012-04-19T11:07:58.343 回答