【发布时间】:2014-01-29 01:54:53
【问题描述】:
我有一个类,它有一个返回自身新实例的方法。 这允许我使用一个对象,而不必一遍又一遍地声明具有相同值的新对象。对于那些想知道为什么不扩展课程或其他东西的人,它只是让我的生活更轻松,它就像一种魅力,但我的最终目的是将它们全部删除。
例如:
$foo = new myClass('name1','ab','cd');
$bar = $foo->duplicate();
//duplicate() saves the new object in itself in an array:
array_push($this->instance,new myClass('name1','ab','cd'));
//and returns a pointer to the saved instance.
return end($this->instance);
$foo 和 $bar 现在共享相同的方法和值,但这些值可以单独修改。
$foo->changeName('newName');
$bar->changeName('newName2');
我的问题是,如果我取消设置创建的第一个类unset($foo),PHP 会自动取消设置其他实例($bar),还是垃圾收集器最终会删除它们?
我已经通过使 $foo 不稳定来测试它,并且在我调用 $foo 时给我一个错误,但在我调用 $bar 时却没有。
我要做的是一次取消设置该类的所有实例。
谢谢。
【问题讨论】:
-
如果您想确定性地销毁对象的“集合”,请将它们保存在某种真正的集合中,然后
unset一次将它们全部(循环)。