PHP: уничтожить объект изнутри объекта? - PullRequest
13 голосов
/ 12 сентября 2009

Есть ли в PHP способ уничтожить объект из этого же объекта?

Ответы [ 3 ]

12 голосов
/ 12 сентября 2009

Если метод вызывается в контексте объекта, тогда должна быть хотя бы одна ссылка на этот объект. А поскольку php удаляет только недоступные объекты, ответ таков: нет.

7 голосов
/ 02 августа 2010

Существует способ самоуничтожения объекта:

Используйте массив $GLOBALS, чтобы найти в нем свой экземпляр, затем используйте unset(). Имейте в виду, что unset() не вызывает автоматический магический метод __destruct() все время ...

В документации PHP есть такая пометка (см. Документацию unset()), но она не объясняет, когда unset() не вызывает метод __destruct().

И у меня было такое специфическое поведение:

Я делаю:

unset($myInstance);
$myInstance = clone $otherInstance;

И сначала вызывается __constructor, затем __destruct(). Или я бы хотел, чтобы сначала вызывался __destruct(), потому что unset() перед клоном ... Я застрял с этим сейчас ...

Nicolas.

0 голосов
/ 12 сентября 2009

Нет, я не думаю, что есть. Но нужна ли вам такая вещь?

...