【问题标题】:PHP Object Life TimePHP 对象生命周期
【发布时间】:2011-04-28 06:41:08
【问题描述】:

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

【问题讨论】:

    标签: php object php-5.2


    【解决方案1】:

    当当前脚本中不再引用对象时,所有对象都将被销毁(调用__destruct 方法)。当您 unset 包含该对象的所有变量或脚本结束时,就会发生这种情况。

    【讨论】:

      【解决方案2】:

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

      事实上,你应该永远自己调用__destruct。当您想销毁对象时,使用unset 取消设置对对象的引用。 __destruct 实际上不会 销毁您的对象,它只是一个函数,在销毁之前 会被 PHP 自动调用,因此您有机会在销毁之前进行清理。您可以根据需要调用 __destruct 多少次而无需恢复记忆。

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

      【讨论】:

      • 为什么说对象保存到session就不会被销毁?
      • 它将被销毁,从内存中删除,甚至析构函数可能会运行,但您可以在之后恢复它(在下一页)。也许我根本不应该提到它,因为它似乎与问题无关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多