dr.Brain

doctor Brain

мир глазами веб-разработчика

PHP: деструктор

когда в PHP происходит вызов метода-деструктора __destruct()

dr.Brain

время чтения 1 мин.

Photo by Karla Rivera on Unsplash

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

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.