PHP 5 - конструкторы и деструкторы
Прислано snake_oriental на 20 Июля 2008, 07:18:51
В PHP 5 введены конструкторы и деструкторы.

Метод-конструктор вызывается автоматически при каждом создании объекта. И хотя конструктор появился в PHP давно (эту роль выполнял метод, названный именем класса), но в PHP 5 была изменена схема именования конструктора - метод __construct() является теперь конструктором класса.

Аналогично, при уничтожении объекта вызывается специальный метод __destruct() – деструктор класса.

class MyClass {
function __construct() {
echo "Запущен конструктор";
}
function __destruct() {
echo "Запущен деструктор";
}
}
$obj = new MyClass(); // Выводит "Запущен конструктор"
unset($obj); // Выводит "Запущен деструктор"
?>

Если же необходимо вызвать конструктор или деструктор базового класса, то необходимо это делать явно, через указатель parent.

class MyClass {
function __construct() {
echo "Запущен конструктор базового класса";
}
function __destruct() {
echo "Запущен деструктор базового класса";
}
}
class MyClass1 extends MyClass {
function __construct() {
parent::__construct();
}
function __destruct() {
parent::__destruct();
}
}
$obj = new MyClass1(); // Выводит "Запущен конструктор
// базового класса"
unset($obj); // Выводит "Запущен деструктор базового класса"
?>

Для целей совместимости с предыдущей версией PHP 5 поступает следующем образом: если при создании объекта в классе не найдет конструктор __construct(), то PHP пытается выполнить метод, имя которого совпадает с именем класса. Т.о. конструкторы PHP 4 будут работать с PHP 5 без каких-либо изменений кода.