PHP:如何在对象内部销毁对象?

14

在PHP中,有没有一种方式可以在对象内部销毁该对象?


不,我认为没有这样的东西。但是你需要这样的东西吗? - RaYell
@Christian,摧毁一个对象的能力与创建它们的能力在同一位置 - 不在对象本身内部。 - Jaak Kütt
1
在这里,对于一个基本相似的问题,我给出了一个“是的,这是如何做到的”的答案 - https://dev59.com/SW435IYBdhLWcg3w1z4t#21367011 - Jaak Kütt
2个回答

12
如果在对象的上下文中调用方法,则必须至少有一个对该对象的引用。由于PHP仅删除不可访问的对象,所以答案是:不。


7

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

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

PHP文档中的这种方式中有这样的注释(请参见unset()文档),但它并没有详细解释何时unset()不会调用__destruct()方法。

我遇到了这种具体行为:

我执行了以下操作:

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

__constructor会先被调用,然后是__destruct()。但是我希望__destruct()能够先被调用,因为unset()在clone之前执行...我现在遇到了困难...

Nicolas。


2
析构函数会在垃圾回收时或脚本终止时被调用。 - hakre
正如hakre所述,只有当$myInstance变量超出作用域并被垃圾回收程序回收时,析构函数才会被调用。 - Swivel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接