PHP5: сборка мусора SplObjectStorage - PullRequest
4 голосов
/ 13 июня 2011

Я использую SplObjectStorage для хранения информации об управляемых объектах.Когда мои объекты будут уничтожены, я бы хотел, чтобы SplObjectStorage автоматически очищал объекты, которые больше не имеют внешних ссылок.

Сейчас я вижу только два варианта этого:

  • деструктор управляемого объекта информирует хранилище об удалении ссылок на него;это неприемлемо, так как эти объекты не должны знать менеджера;
  • синтаксический анализ debug_zval_dump () для получения счетчика ссылок;тоже неприемлемо, ИМХО слишком "хаки" для серьезного применения.

Есть еще идеи?

1 Ответ

0 голосов
/ 12 июля 2011

Вы можете попытаться реализовать желаемый функционал с событиями.Каждый управляемый объект генерирует событие при уничтожении, и менеджер объектов подписывается на это событие, поэтому он может удалить ссылку на объект из SplObjectStorage.

...