2010-09-10 4 views
9

Ho le seguenti due classi.Chiamare il costruttore genitore in PHP

class Settings 
{ 
    function __CONSTRUCT() 
    { 
     echo "Settings Construct"; 
    } 
} 

class PageManager extends Settings 
{ 
    function __CONSTRUCT() 
    { 
     echo "PageManager Construct"; 
    } 
} 

$page = new PageManager(); 

Ho pensato che avrebbe funzionato bene, ma esegue solo il costruttore di PageManager. Suppongo che sia perché ho scavalcato il costruttore di Setting. C'è un modo in cui posso chiamare anche il costruttore del genitore?

risposta

16

Basta chiamare utilizzando parent ::

/* Settings */ 
class Settings{ 
function __CONSTRUCT(){ 
    echo "Settings Construct"; 
} 
} 

/* PageManager */ 
class PageManager extends Settings{ 
function __CONSTRUCT(){ 
    parent::__CONSTRUCT(); 
    echo "PageManager Construct"; 
} 
} 

Date un'occhiata al manual(Constructors and Destructors)!

+7

è meglio chiamare il costruttore padre prima di tutte le istruzioni nel costruttore figlio, quindi siamo sicuri che l'oggetto genitore è pronto per l'uso. –

+0

@Tomasz Kowalczyk E '? Bene, ho cambiato la mia risposta per riflettere questo, grazie! :) – Iznogood

+0

@Thomasz Questo dipende interamente da ciò che i costruttori padre e figlio devono fare. Non è * sempre * migliore. – deceze

0

Inoltre: è necessario sapere che questo comportamento di PHP non è univoco per la funzione __construct().