Савельева Нина Владимировна
Шрифт:
Еще одна ситуация – в базовом классе есть функция, имя которой совпадает с именем расширяющего класса, а в расширяющем классе нет конструктора.
В этом случае PHP3 вызовет в качестве конструктора функцию Programmer из описания класса Person. Поскольку конструктор – это функция, у которой то же имя, что и у класса. И неважно, определена ли эта функция в самом классе или она наследуется из базового класса. В PHP4 класс Programmer не будет иметь своего конструктора, поэтому вызовется конструктор базового класса.
Ни в PHP 3, ни в PHP 4 конструктор базового класса не вызывается автоматически из конструктора порожденного класса.
Оператор ::
Иногда внутри описания класса возникает необходимость сослаться на функции или переменные из базового класса. Бывает, что нужно ссылаться на функции в классе, ни один представитель которого еще не создан. Как быть в таком случае? В PHP4 для этого существует специальный оператор «::»
Например, вот так можно вызвать в описании класса Programmer функцию show_name из базового класса Person и функцию say_hello, заданную в описании класса Programmer, когда ни один объект этого класса еще не был создан:
В результате работы этой программы получим следующее: