PHP 5 позволяет объявлять методы-конструкторы. Классы, в которых
объявлен метод-констуктор, будут вызывать этот метод при каждом
создании нового объекта, так что это может оказаться полезным,
чтобы, например, инициализировать какое-либо состояние объекта
перед его использованием.
Замечание:
Конструкторы в классах-родителях не вызываются автоматически.
Чтобы вызвать конструктор, объявленный в родительском классе,
следует обратиться к методу parent::__construct().
Пример 19-7. Использование унифицированных конструкторов
<?php class BaseClass { function __construct() { print "Конструктор класса BaseClass\n"; } }
class SubClass extends BaseClass { function __construct() { parent::__construct(); print "Конструктор класса SubClass\n"; } }
$obj = new BaseClass(); $obj = new SubClass(); ?>
Если PHP 5 не может обнаружить объявленный метод __construct(),
вызов конструктора произойдет по прежней схеме, через обращение к методу,
имя которого соответствует имени класса. Может возникнуть только
одна проблема совместимости старого кода, если в нём присутствуют
классы с методами __construct().
PHP 5 предоставляет концепцию деструкторов, сходную с теми,
что применяются в других ОО языках, таких, как Java:
когда освобождается последняя ссылка на объект, перед высвобождением
памяти, занимаемой этим объектом, вызывается метод
__destruct(), не принимающий параметров.
Пример 19-8. Пример использования деструктора
<?php class MyDestructableClass { function __construct() { print "Конструктор\n"; $this->name = "MyDestructableClass"; }
Как и в случае с конструкторами, деструкторы, объявленные
в родительском классе, не будут вызваны автоматически.
Для вызова деструктора, объявленном в классе-родителе,
следует обратиться к методу parent::__destruct().