我实际上想过,我会理解PHP的功能__destruct方法。但今天我偶然发现了一个问题:
wordpress的ngg gallery插件包含带有以下方法的nggAPI类
function __destruct() {
echo $this->output;
}
它通过require_once
包含在内require_once (dirname (__FILE__) . '/xml/json.php');
exit();
除了事实,我不喜欢这种典型的WP工作方式,它应该有效。这就是一个谜:只有在Chrome中打开时,才会执行__destruct。在IE中,Safari和Firefox没有任何反应。我已经检查了一千次,并且确实没有缓存问题或类似的东西。我实现了printOutput-Method而不是__destruct,并在脚本的末尾调用它 - 现在它正在运行。
这可以吗??!对此有合理的解释吗?
非常感谢。
答案 0 :(得分:8)
没有
PHP在服务器端运行,因此在响应发送到客户端之前执行。哪个浏览器无关紧要。
答案 1 :(得分:0)
根据constructors/destructors上的PHP手册,只要没有对象的引用或关闭序列的一部分,就会运行析构函数。
如果脚本在析构函数内部以exit()
停止,则可能会中断析构函数。
此外,如果您尝试为父类调用析构函数,则必须手动执行此操作。 e.g:
class Foo extends Bar
{
public function __destruct()
{
parent::__destruct();
}
}
无论如何,没有任何特定于浏览器的内容,这是PHP中的内容。