php destruct什么时候调用,如果您使用重定向,PHP5是否调用__destruct()?

无论你有什么样的对象

在你发布的脚本部分,你没有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”字符串:析构函数被调用;你只是没有看到它的屏幕;-)

上这就是为什么我在我的例子使用的文件,顺便说一句;-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值