Log*_*bby 14 php oop destructor
这是我第一次发布到stackoverflow,但是这些线程对我帮助很大!
Anywho,在我的问题上...是否有任何实例,当PHP中的析构函数没有被调用?我问的原因是因为我有一个mapper类,它将数据映射到对象,在构造函数中,我启动一个事务,在析构函数中我将调用一个提交(我也将有一个成员函数也可以执行提交,如有必要).如果有任何没有调用析构函数的情况,我想知道所以我可以预测它会发生并进行适当的计划.
非常感谢!
Pek*_*ica 14
根据手册,即使脚本使用die()或终止脚本,也会执行析构函数exit():
即使使用exit()停止脚本执行,也将调用析构函数.在析构函数中调用exit()将阻止执行剩余的关闭例程.
根据这太问题,析构函数并没有得到达到PHP的执行时间限制执行时(已确认在Apache 2,PHP 5.2在Windows 7).
析构函数也并没有得到当脚本终止,因为内存的限制达到执行.(刚刚测试过)
析构函数确实在致命错误上执行(刚刚测试过)更新:OP无法确认这一点 - 似乎存在致命错误
它并没有得到关于解析错误执行(因为整个脚本不会被解释)
如果服务器进程崩溃或者PHP控件之外的其他异常发生,则肯定不会执行析构函数.
总而言之,它看起来非常可靠.
但是,在析构函数中进行清理以外的其他操作的缺点是,您的选择在某种程度上是有限的.你不能再抛出异常(除非你在析构函数中再次捕获它们),你不能输出任何错误消息,你不能真正依赖其他对象(如数据库接口)的存在. ....我在使用析构函数方面没有丰富的经验,但我不确定你计划做的是否是一个可行的想法.
| 归档时间: |
|
| 查看次数: |
1962 次 |
| 最近记录: |