PHP对象生命周期

PHP对象生命周期,php,object,php-5.2,Php,Object,Php 5.2,我使用的是PHP5.2。如果我在一页上新建一个对象,这个对象什么时候会被销毁?当用户转到另一个.php页面或我需要显式调用_destructor时,对象是否自动被销毁 它将在页面加载结束时被销毁(从内存中卸载),或者如果您先前取消设置对它的所有引用。您不必手动销毁它,因为PHP总是在脚本结束时清除所有内存 事实上,你不应该称自己为“自毁”。用于在要销毁对象时取消对该对象的引用__destruct实际上不会破坏您的对象,它只是一个函数,在破坏之前PHP会自动调用它,这样您就有机会在它被破坏之前进行

我使用的是PHP5.2。如果我在一页上新建一个对象,这个对象什么时候会被销毁?当用户转到另一个.php页面或我需要显式调用_destructor时,对象是否自动被销毁

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

事实上,你不应该称自己为“自毁”。用于在要销毁对象时取消对该对象的引用__destruct实际上不会破坏您的对象,它只是一个函数,在破坏之前PHP会自动调用它,这样您就有机会在它被破坏之前进行清理。您可以调用uu destruct任意次数,而无需恢复内存


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

当当前脚本中没有更多引用对象时,所有对象都将被销毁(调用
\u destruct
方法)。如果
unset
包含该对象的所有变量,或者脚本结束,就会发生这种情况。

为什么说如果将对象保存到会话中,该对象不会被销毁?它会被销毁,从内存中删除,甚至可以运行析构函数,但您可以在以后(在下一页)将其还原。也许我根本不应该提及它,因为它似乎与问题无关。