__destruct方法浏览器是否依赖?

时间:2014-05-22 13:08:02

标签: php wordpress destructor

我实际上想过,我会理解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,并在脚本的末尾调用它 - 现在它正在运行。

这可以吗??!对此有合理的解释吗?

非常感谢。

2 个答案:

答案 0 :(得分:8)

没有

PHP在服务器端运行,因此在响应发送到客户端之前执行。哪个浏览器无关紧要。

答案 1 :(得分:0)

根据constructors/destructors上的PHP手册,只要没有对象的引用或关闭序列的一部分,就会运行析构函数。

如果脚本在析构函数内部以exit()停止,则可能会中断析构函数。

此外,如果您尝试为父类调用析构函数,则必须手动执行此操作。 e.g:

class Foo extends Bar
{
    public function __destruct()
    {
        parent::__destruct();
    }
}

无论如何,没有任何特定于浏览器的内容,这是PHP中的内容。