Деструктор PHP
Деструктор класса PHP объектно-ориентированного программирования — это специальная функция, принадлежащая к группе так называемых магических методов, которая автоматически вызывается при удалении объекта. Когда освобождается последняя ссылка на объект, перед высвобождением памяти, занимаемой этим объектом, вызывается метод __destruct(), не принимающий параметров.
Что такое деструктор PHP?
В прошлом уроке вы узнали, что при создании объекта может быть вызвана функция-конструктор __construct()
для инициализации переменных-членов. Функция-деструктор __destruct()
выполняет обратную миссию — во время удаления объекта она освобождает память и ресурсы сервера. Деструктор выполняет важную функцию, так как на сервере одновременно работают десятки приложений различных отдельных сайтов, а ресурсы любого сервера ограничены.
Объявление функции-деструктора начинается начинается с двух знаков подчеркивания (__)
и ключевого слова destruct
:
Деструктор вызывается для объекта только один раз — в момент удаления объекта. Этот метод полезен, когда вы хотите выполнить какие-либо действия в последнюю минуту (например, сохранить или распечатать некоторые данные после их удаления).
В приведенном ниже примере класс Test выводит сообщение при создании экземпляра объекта и печатает другое сообщение при его удалении:
Пример
Попробуй сам »<?php
class Test {
public $name;
// Конструктор
function __construct($name) {
// присваивает значение аргумента свойству $name
$this->name = $name;
echo 'Добро пожаловать, '. $this->name. '<br>';
}
// Деструктор
function __destruct() {
echo 'Прощай, '. $this->name;
}
}
$user = new Test("Stiven");
?>
Результат выполнения кода:
Прощай, Stiven
В следующем примере деструктор очищает несколько свойств:
Пример
Попробуй сам »<?php
class Fruit {
public $name;
public $color;
function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
function __destruct() {
echo "Название фрукта {$this->name} и его цвет {$this->color}.";
}
}
$apple = new Fruit("яблоко", "красный");
?>
Результат выполнения кода:
В приведенных выше примерах метод __destruct()
будет вызываться в конце выполнения скрипта.
Примечание: Метод __desctructor
будет вызываться только тогда, когда текущий скрипт PHP будет полностью выполнен, достигнув его последней строки или выйдя из него с помощью функций exit()
или die()
.