PHP: деструктор
когда в PHP происходит вызов метода-деструктора __destruct()
PHP использует концепцию методов конструкторов и деструкторов, свойственную другим объектно-ориентированным языкам, например, С++. Так, при создании объекта вызывается конструктор __construct(), а при удалении объекта из памяти вызывается деструктор __destruct(). Понимание этих процессов позволяет создавать более гибкий API. Но сегодня мы поговорим о том, когда именно в PHP происходит вызов метода __destruct().
Совершенно очевидно, этот метод будет вызван, когда мы явно удаляем объект:
$object = new Object();
unset($object); // происходит немедленный вызов метода __destruct
$object = null; // происходит немедленный вызов метода __destruct
Еще деструктор вызывается, когда заканчивается область видимости, в которой объект существует. Например, в конце метода-контроллера:
function store(Request $request)
{
$object = new Object();
User::create(...);
// __destruct будет вызван здесь
return view('welcome');
}
Даже, если мы находимся внтури процесса, находящегося в очереди, __destruct() будет вызван до конца метода handle:
function handle()
{
$object = new Object();
User::create(...);
// __destruct будет вызван здесь
}
Так же, метод-деструктор будет вызван при завершении скрипта:
function handle()
{
$object = new Object();
User::create(...);
// __destruct будет вызван здесь
exit(1);
}
Спасибо зв внимание.
Перевод статьи Mohamed Said “When does PHP call __destruct()?”.
