можете ли вы привести какие-либо примеры того, что я могу запустить, когда объект удален?
Ответ 1
Это дает объекту возможность подготовиться к убийству. Это может означать ручную очистку, сохранение состояния и т.д.
Например, модель может захотеть сохранить все свои текущие свойства обратно в базу данных.
Или сам объект базы данных может захотеть закрыть сокет, который он использует для связи с сервером базы данных.
Ответ 2
Итак, вы, вероятно, знаете, что делает конструктор. Если конструктор настроен, деструктор очищается. Вот пример с сайта PHP:
<?php
class my_class {
public $error_reporting = false;
function __construct($error_reporting = false) {
$this->error_reporting = $error_reporting;
}
function __destruct() {
if($this->error_reporting === true) $this->show_report();
unset($this->error_reporting);
}
?>
Здесь ссылка на документацию PHP по этому вопросу.
Ответ 3
Скажем, у меня есть класс Result, который является оболочкой (реализуя Iterator, среди других тонкостей) для объект mysqli_result. Когда я уничтожаю один из моих объектов Result, я хочу быть уверенным вызвать метод free() для объекта mysqli_result, чтобы восстановить память, которую он использовал. Поэтому я делаю это в деструкторе моего класса Result.