PHP对象生命时间

时间:2010-10-20 20:34:55

标签: php object php-5.2

我使用的是PHP 5.2。如果我在一个页面上新建一个对象,该对象什么时候会被破坏?在用户转到另一个.php页面时是否自动销毁对象,或者我需要显式调用__destructor?

2 个答案:

答案 0 :(得分:9)

在页面加载结束时,它将被销毁(从内存中卸载),或者如果您之前取消设置对它的所有引用。您不必手动销毁它,因为PHP总是清理脚本末尾的所有内存。

实际上,你应该从不自己调用__destruct。如果要销毁对象,请使用unset取消设置对象的引用。 __destruct实际上会破坏你的对象,它只是一个在破坏之前由PHP 自动调用的函数,所以你有机会在它被销毁之前进行清理。您可以根据需要调用__destruct多次,而不会忘记记忆。

但是,如果您已将对象保存到会话变量,它将“休眠”而不是被销毁。请参阅__sleep的手册。当然,它仍会从内存中卸载(并保存到磁盘),因为PHP在脚本之间没有任何内存。

答案 1 :(得分:0)

当在当前脚本中没有对它们的引用时,所有对象都被破坏(调用__destruct方法)。当unset包含该对象的所有变量或脚本结束时,都会发生这种情况。