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()?”.