2009-12-25 11 views
10

Diciamo che ho una ParentClass astratta e una ChildClass. ChildClass estende ParentClass. Ora ParentClass ha questo simpatico costruttore:Una sottoclasse può ereditare anche il costruttore della classe genitore o ogni classe deve avere il proprio costruttore?

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

ChildClass erediterà automaticamente questo? E se non aggiungo alcun costruttore a ChildClass, sarò in grado di dire $foo = new ChildClass("foo.tpl.php"); in modo che venga chiamato il costruttore di ParentClass?

risposta

11

ChildClass erediterà automaticamente il costruttore.

0

La risposta ad entrambe le domande è .

18

Dal manuale PHP:

Nota: costruttori Parent non sono chiamati implicitamente se la classe figlia definisce un costruttore. Per eseguire un costruttore genitore, una chiamata a parent :: __ construct() all'interno del costruttore figlio è richiesta .

+1

Grazie - questa risposta è stata utile per me. –

+0

Nota: la chiamata di parent :: __ construct() non reindirizza i parametri. Utilizzare questo: if (func_num_args()> 0) { \t $ constructorArgs = func_get_args(); \t call_user_func_array (array ($ this, 'parent :: __ construct'), $ constructorArgs); } altro { \t parent :: __ construct(); } – StanE

Problemi correlati