PHP垃圾收集器:假定特定的销毁顺序

PHP垃圾收集器:假定特定的销毁顺序,php,garbage-collection,destructor,Php,Garbage Collection,Destructor,基于这个问题,我想知道依赖垃圾收集器按预定顺序销毁对象private$delegate是否有危险 报告说: 只要没有对特定对象的其他引用,或者在关闭序列期间以任何顺序调用析构函数方法 嗯。因此,如果对象以某种方式存活到关闭序列,将出现问题 让我们假设我们确保该对象在关闭序列之前不存在,因此“一旦没有其他引用”就会被销毁。此时,这意味着,Test的实例一旦被销毁,其属性$delegate也将随后被销毁 但是,如果在未来的PHP版本中,垃圾收集器变得更加智能,并且以某种方式“检测”到Test的实例没

基于这个问题,我想知道依赖垃圾收集器按预定顺序销毁对象
private$delegate
是否有危险

报告说:

只要没有对特定对象的其他引用,或者在关闭序列期间以任何顺序调用析构函数方法

嗯。因此,如果对象以某种方式存活到关闭序列,将出现问题

让我们假设我们确保该对象在关闭序列之前不存在,因此“一旦没有其他引用”就会被销毁。此时,这意味着,
Test
的实例一旦被销毁,其属性
$delegate
也将随后被销毁

但是,如果在未来的PHP版本中,垃圾收集器变得更加智能,并且以某种方式“检测”到
Test
的实例没有使用其属性
$delegate
,并在
Test
仍处于活动状态时将其销毁,该怎么办?那将是不幸的


简言之,问题:最后一段是一个可以想象的场景,还是一个注册为对象“B”属性的对象“a”总是在“B”被破坏后被破坏(假设我们不在关闭序列中)?

没有理由相信PHP会有一个垃圾收集器而不是当前的引用计数机制


即使有,只要活动对象持有指向“委托”对象的指针,垃圾收集器就不能删除委托对象,所以不要担心,你是安全的。

所以你的问题是基于一种“假设的”未来情况,即假设
更聪明的
意味着
更愚蠢的
没有其他参考资料似乎相当清楚地暗示其意图是不会改变。如果措辞是
没有其他u active_uureferences
或任何其他“将来可以用另一种含义阅读”的词语,我会更加小心。这个问题似乎离题了,因为它是基于推测的fiction@MarkBaker是的,我也这么怀疑。有没有一个StackExchange网站更适合这类问题?我想对于这类问题,它会是一个更好的网站。是我的错。