Подтвердить что ты не робот

Когда использовать деструктор в php?

Какова основная цель деструктора?

можете ли вы привести какие-либо примеры того, что я могу запустить, когда объект удален?

4b9b3361

Ответ 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.