PHP5:SplObjectStorage垃圾回收

时间:2011-06-13 15:20:36

标签: php garbage-collection spl

我正在使用SplObjectStorage来保存有关托管对象的信息。当我的对象被破坏时,我希望SplObjectStorage能够自动清理没有外部引用的对象。

我现在只能看到两个选项:

  • 让托管对象的析构函数通知存储删除对它的引用;这是不可接受的,因为这些对象不应该知道经理;
  • 解析debug_zval_dump()以获取引用计数;不可接受的,恕我直言,对于一个严肃的申请来说太“hacky”。​​

还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用事件实现所需的功能。每个托管对象在销毁时生成一个事件,并且对象管理器在此事件上订阅,因此它将能够从SplObjectStorage中删除对象的引用。