我可以信任要调用的PHP __destruct()方法吗?

时间:2020-03-06 14:54:20  来源:igfitidea点击:

在PHP5中,是否一定要为每个对象实例调用__destruct()方法?程序中的异常可以防止这种情况发生吗?

解决方案

释放所有引用或者脚本终止时,将调用析构函数。我认为这是指脚本正确终止的时间。我要说的是,关键异常不能保证析构函数被调用。

PHP文档有点薄,但是它确实表示析构函数中的异常会引起问题。

还值得一提的是,在子类具有自己的析构函数的情况下,不会自动调用父析构函数。

如果父类执行任何必需的清除操作,则必须从子类__destruct()方法中显式调用parent :: __ destruct()。

当前有一个带有循环引用的bug,该bug阻止了destruct方法的隐式调用。 http://bugs.php.net/bug.php?id=33595
应该在5.3中修复