PHP:Уничтожить объект изнутри объекта?
Вопрос
Есть ли в PHP способ уничтожить объект изнутри этого же объекта?
Решение
Существует способ самоуничтожения объекта:
Использовать $GLOBALS
массив, чтобы найти в нем свой экземпляр, затем используйте unset()
.Быть в курсе, что unset()
не вызывает автоматически __destruct()
волшебный метод на все времена...
Есть такая заметка таким образом (см. unset()
документации) в документации PHP, но не объясняет, когда именно unset()
не звонит в __destruct()
метод.
И у меня было такое специфическое поведение:
Я делаю:
unset($myInstance);
$myInstance = clone $otherInstance;
И __constructor
сначала вызывается, затем __destruct()
.Или я хотел бы __destruct()
позвонить первым, потому что unset()
перед клоном...Я застрял на этом сейчас...
Николас.
Другие советы
Если метод вызывается в контексте объекта, тогда должна быть хотя бы одна ссылка на этот объект. А поскольку php удаляет только недоступные объекты, ответ таков: нет.
Нет, я не думаю, что есть. Но нужна ли вам такая вещь?