4

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

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

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

还有其他想法吗?

4

1 回答 1

0

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

于 2011-07-12T05:59:32.563 回答