2009-12-25 2 views
10

Допустим, у меня есть абстрактный ParentClass и ChildClass. ChildClass расширяет ParentClass. Теперь у ParentClass есть этот красивый конструктор:Может ли подкласс наследовать также конструктор родительского класса, или каждый класс имеет свой собственный конструктор?

function __construct($tplFile) { 
    $this->$tplFile = $tplFile; 
} 

Будет ли ChildClass автоматически наследовать этот? И если я не добавлю конструктора в ChildClass, смогу ли я сказать $foo = new ChildClass("foo.tpl.php");, чтобы вызвать конструктор ParentClass?

ответ

11

ChildClass автоматически наследует конструктор.

0

Ответ на оба вопроса: да.

18

Из PHP инструкции:

Примечание: Родитель конструкторы не вызываются, если дочерний класс определяет конструктор. Чтобы запустить родительский конструктор, необходимо вызвать вызов родительского :: __ construct() в дочернем конструкторе: .

+1

Спасибо, этот ответ был полезен для меня. –

+0

Примечание: Вызов parent :: __ construct() не перенаправляет параметры. Используйте это: if (func_num_args()> 0) { \t $ constructorArgs = func_get_args(); \t call_user_func_array (массив ($ this, 'parent :: __ construct'), $ constructorArgs); } else { \t parent :: __ construct(); } – StanE

Смежные вопросы