Конструктор класса — это специальный метод, который автоматически вызывается в момент создания объекта (например: $car=new Car ()). В php конструктор класса носит название __construct(двойное подчеркивание):
[php] function __construct(){ echo "Object created!"; } [/php]
При создании объекта какого-нибудь класса мы пишем например: $fruit = new Fruit (). Эти круглые скобки не что иное, как круглые скобки конструктора (function __construct () ). Т.е. если мы что-то передадим в скобках объекта, оно попадет в скобки конструктора.
Исходя из этого, конструктор служит для инициализации чего-либо. Например, мы хотим, чтобы каждый раз, когда создается объект, что-то записывалось в сессию.
Когда у нас код заканчивается, все объекты удаляются. Или можно удалить объект и раньше (unset ($obj)). Ситуация похоже на конструктор, т.е. я хочу, чтобы при удалении объекта (неважно как), что-то произошло. Для этого применяют деструкторы. Т.е. это специальный метод, который автоматически вызывается при удалении объекта. В php этот метод называют __destruct ().
[php] function __destruct(){ echo "object deleted!"; } [/php]
Внимание! Передавать в деструктор в круглые скобки ничего нельзя.
Порядок удаления объектов не определен. Т.е. объекты удалятся, как захочет сам php. Поэтому есть негласное правило — из деструктора не обращаться к другим объектам, т.к. на момент вызова того объекта он может уже быть удален.
Совместимость в PHP4 и PHP5
В PHP4 не было понятия деструктора. Понятие конструктора в php4 было, но служебного имени метода __construct не было. Конструктором в php4 был метод, одноименный с методом класса. Т.е. если класс называется ‘car’, то и конструктор так же. Совместимость в php5 осталась. Т.е. php5 при создании объекта сначала ищет метод __construct, если он его не находит, то ищет метод, одноименный с методом класса. Если этот метод php нашел, то считает его конструктором.
А если метод __construct будет в коде, то одноименный метод станет простым методом класса.