【问题标题】:PHP: Destroy an object from within the object?PHP:从对象内部销毁对象?
【发布时间】:2009-09-12 08:59:47
【问题描述】:

PHP 中有没有办法从同一个对象中销毁一个对象?

【问题讨论】:

  • 不,我认为没有。但是你需要这样的东西吗?
  • @Christian 破坏对象的能力与创建对象的能力相同,而不是在对象本身内部。
  • 在这里对一个基本相似的问题给出了“是的,这里是如何”的答案 - stackoverflow.com/a/21367011/1537018

标签: php object destroy


【解决方案1】:

如果在对象的上下文中调用方法,则必须至少有一个对该对象的引用。而且由于 php 只删除无法访问的对象,答案是:不。

【讨论】:

    【解决方案2】:

    有一种方法可以自毁对象:

    使用$GLOBALS 数组在其中找到您的实例,然后使用unset()。请注意unset() 不会一直自动调用__destruct() 魔术方法...

    PHP文档中有这样的说明(见unset()文档),但没有具体说明unset()何时不调用__destruct()方法。

    我有这种特定的行为:

    我做了一个:

    unset($myInstance);
    $myInstance = clone $otherInstance;
    

    首先调用__constructor,然后调用__destruct()。或者我希望首先调用__destruct(),因为unset() 在克隆之前... 我现在坚持...

    尼古拉斯。

    【讨论】:

    • 在垃圾回收或脚本终止时调用析构函数。
    • 正如 hakre 所说,在 $myInstance 变量超出范围并且垃圾收集器将其拾取之前,不会调用析构函数。
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多