В PHP __construct() вызывается при создании объекта и __destruct() вызывается при удалении объекта из памяти. Используя эти знания, мы можем создавать более плавные API, как продемонстрировал Фрик Ван дер Хертен в этом коротком видео .
Теперь давайте посмотрим, когда PHP точно вызывает __destruct() .
Объект удаляется из памяти, если вы явно удаляете его:
$object = new Object(); unset($object); // __destruct will be called immediately. $object = null; // __destruct will be called immediately.
Он также вызывается, когда область, в которой срок службы объекта подходит к концу, например, в конце метода контроллера:
function store(Request $request)
{
$object = new Object();
User::create(...);
// __destruct will be called here.
return view('welcome');
}
Даже если мы находимся в рамках длительного процесса, например, задания в очереди, __destruction будет вызван до окончания метода дескриптора:
function handle()
{
$object = new Object();
User::create(...);
// __destruct will be called here.
}
Он также будет вызван, когда сценарий завершается:
function handle()
{
$object = new Object();
User::create(...);
// __destruct will be called here.
exit(1);
}
Оригинал: “https://dev.to/themsaid/when-does-php-call-destruct-1167”