无论你有什么样的对象
在你发布的脚本部分,你没有instanc涉及任何对象 - 也许这是没有析构函数被调用的原因?
在PHP脚本
使用头重定向并不妨碍析构函数被调用结束。
还要注意,调用析构函数在PHP脚本结束 - 但并不妨碍重定向,作为头说:“重定向”已经生成。
例如,使用此代码:
class Test {
public function __destruct() {
echo 'hehe';
file_put_contents('/tmp/test-desctructor.txt', "glop\n");
exit;
}
}
$a = new Test();
header('Location: http://example.com/');
exit;
(请注意,我纠正了一些错误,并添加类的实际instanciation)上
你不会看到“hehe”输出,但您会发现文件/tmp/test-desctructor.txt已创建:
$ cat /tmp/test-desctructor.txt
glop
您会如果您想在输出中获得“hehe”,则需要删除重定向。
在生成头文件后调用析构函数 - 并且从析构函数调用exit不会改变该头文件已经生成的事实。
哦,这里是一记manual(报价 - 在页面的底部):
注:析构函数 脚本关闭时调用有HTTP标头 已经发出。
这就是为什么你没有看到你的“hehe”字符串:析构函数被调用;你只是没有看到它的屏幕;-)
上这就是为什么我在我的例子使用的文件,顺便说一句;-)