Деструкторы
Возможность объявления деструкторов может быть весьма полезной. Деструктор может вести лог отладочных сообщений, закрывать соединения с базой данных и т.п. В PHP4 отсутствовала поддержка деструкторов, хотя имелась возможность указать функцию, которая вызывается при завершении работы скрипта.
PHP5 поддерживает деструкторы, аналогично другим объектно-ориентированным языкам, таким как Java. Когда последняя ссылка на объект уничтожена, прежде, чем память, выделенная объекту, уничтожается, вызывается метод класса с именем __destruct() без каких-либо параметров.
Пример:
function __construct() {
print "In constructor\n";
$this->name = “MyDestructableClass”;
}
function __destruct() {
print “Destroying ” . $this->name . “\n”;
}
}
$obj = new MyDestructableClass();
?>
Подобно конструкторам, деструкторы базовых классов не вызываются автоматически. Для вызова деструктора базового класса необходимо явно указать вызов метода parent::__destruct() в коде деструктора.
[fixxxer] Примечание: само собой разумеется, при портировании PHP4-скриптов возможной несовместимостью будет наличие методов __destruct(), используемых в других целях. Видимо, в связи с мизерной вероятностью такого случая разработчики не сочли нужным об этом упомянуть.
