我正在使用 PHP 5.2。如果我在一页上新建一个对象,这个对象什么时候会被破坏?当用户转到另一个 .php 页面或我需要显式调用 __destructor 时,对象是否会自动销毁?
问问题
4957 次
2 回答
13
它将在页面加载结束时被破坏(从内存中卸载),或者如果您之前取消设置对它的所有引用。您不必手动销毁它,因为 PHP 总是在脚本结束时清理所有内存。
事实上,你永远不应该自己调用 __destruct。当您想销毁对象时,使用unset 取消设置对对象的引用。__destruct 实际上不会销毁您的对象,它只是一个函数,在销毁之前将由 PHP 自动调用,因此您有机会在它被销毁之前进行清理。您可以根据需要调用 __destruct 多少次,而无需恢复记忆。
但是,如果您将对象保存到会话变量中,它将“休眠”而不是被销毁。请参阅__sleep的手册。当然,它仍然会从内存中卸载(并保存到磁盘),因为 PHP 在脚本之间的内存中没有任何内容。
于 2010-10-20T20:37:30.850 回答
2
__destruct
当当前脚本中不再引用它们时,所有对象都将被破坏(调用该方法)。当您unset
包含该对象的所有变量或脚本结束时,就会发生这种情况。
于 2010-10-20T20:38:16.620 回答