| ||||||||||||
Конструкторы
Конструкторы это функции класса, которые автоматически вызываются при создании нового экземпляра класса операцией new. В PHP 3 функция становится конструктором, когда она имеет то же имя, что и класс. В PHP 4 функция становится конструктором, когда она имеет то же имя, что и класс, в котором она определена - разница незаметна, но существенна (см. далее).
Здесь определяется класс Auto_Cart, который является Cart плюс конструктор, который инициализирующий cart одним элементом номер "10" всякий раз, когда новый Auto_Cart создаётся с помощью "new". Конструкторы могут принимать аргументы, и эти аргументы не обязательны, что делает эти конструкторы более используемыми. Чтобы иметь возможность использовать класс без параметров, все параметры конструкторов нужно сделать необязательными/optional, предоставив значения по умолчанию.
Вы можете также использовать операцию @ для подавления ошибок, возникающих в конструкторе, например, @new.
В PHP 3 никакой конструктор в вышеприведённом примере не вызывается. Правило PHP 3 таково: 'Конструктор это функция с тем же именем, что и класс'. Имя класса - B, а функции с именем B() в классе B нет. Ничего не происходит. Это исправлено в PHP 4 путём введения нового правила: если класс не имеет конструктора, вызывается конструктор базового класса, если он имеется. В РНР 4 предыдущий пример выведет 'I am the constructor of A.<br>'.
В PHP 3 функция B() в классе A станет конструктором в классе B, хотя это никак не предполагается. Правило PHP 3: 'Конструктор это функция с тем же именем, что и класс'. PHP 3 не заботиться о том, определяется ли функция в классе B или наследуется. Это изменено в PHP 4 путём модификации правила: 'Конструктор это функция с тем же именем, что и класс, в котором она определяется'. Таким образом, в PHP 4 класс B может не иметь собственной функции-конструктора, и будет вызван конструктор базового класса, печатая 'I am the constructor of A.<br>'.
Деструкторы это функции, вызываемые автоматически при уничтожении объекта в процессе работы функции unset() или просто при выходе за пределы области видимости. В PHP нет деструкторов. | ||||||||||||
|