Деструктор PHP
Деструктор класса PHP ООП - это специальная функция (принадлежащая к группе методов, известных как магические методы), которая автоматически вызывается при удалении объекта. Деструктор не принимает никаких параметров. Понятие деструктора было введено в PHP5, который реализует полноценную объектно-ориентированную модель. Дочерний класс может наследовать деструктор от родительского класса, если он не реализует деструктор сам.
При создании объекта может быть вызвана функция PHP-конструктора для инициализации переменных-членов. Деструктор выполняет обратную функцию, во время удаления объекта он освобождает память и ресурсы сервера. Деструктор также является важной функцией, так как ресурсы сервера ограничены, а десятки приложений различных отдельных сайтов работают на нем одновременно.
Следовательно, всегда полезно использовать PHP-деструктор. Например, в целях безопасности соединения с базой данных может потребоваться мгновенно закрыть ее сокет. В этом случае деструктор может оказаться весьма полезным.
Следует помнить, что в отличие от некоторых других языков программирования в ООП PHP существует уборщик мусора, который удаляет объекты, когда они больше не используются. Но если мы хотим удалить объект явно, PHP-деструктор подходит для этого.
Уборщик мусора PHP удаляет неиспользуемые объекты, но это может занять некоторое время, а до того момента за неиспользуемым объектом будут закреплены ресурсы. Используя деструктор, мы гарантируем, что ни один ресурс не задействуется впустую, он повышает эффективность приложений и сайтов. Если мы говорим об одном объекте, то использование деструктора не даст заметных изменений.
Но если приложение сложное, и в нем используется множество объектов, в этом случае использование PHP-деструктора может дать существенный эффект.
Синтаксис деструктора PHP
Согласно основам ООП PHP, при объявлении деструктора используется обозначение магических методов - два подчеркивания в начале и ключевое слово destruct:
__destruct();
Деструктор в PHP нельзя вызвать явно, так же, как мы не можем вызвать явно конструктор:
$myobject -> __destruct(); - невозможно
Еще один важный момент, касающийся деструктора: так же, как и конструктор, он вызывается для объекта только один раз - в момент удаления объекта.
Пример деструктора PHP
Ниже приводится простой пример деструктора PHP:
public function __destruct() {
print "{$this->Name} is destroyed...n";
}
Этот деструктор выводит сообщение о том, что объект удален. Мы можем закрыть соединение сокета с базой данных, однако я не пишу этот код. На самом деле весь процесс будет сложнее.
Надеюсь, вы разобрались в общем принципе работы деструктора:
public function __destruct() {
Поместите в скобках ИСПОЛНЯЕМЫЙ КОД.
}
Другой ООП PHP пример полного кода деструктора и конструктора:
<?php
class Car{
function __construct() {
print "In constructorn";
$this->name = "Car";
}
function __destruct() {
print "Destroying " . $this->name . "n";
}
}
$obj = new Car();
?>
В PHP ООП деструктор вызывается только один раз. Лучше всего использовать Parent::_destruct(). Но родительский деструктор следует вызывать после того места, где размещается код деструктора, чтобы быть уверенным, что объект не будет удален, прежде чем он был использован в приложении.
Смотрите приведенный ниже пример:
public function __destruct() {
print "{$this->Name} is destroyed...n";
parent:: _destruct();
}