2010-09-10 21 views
9

Tengo las siguientes dos clases.Llamando al constructor padre en PHP

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

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

$page = new PageManager(); 

Pensé que funcionaría bien, pero solo ejecuta el constructor de PageManager. Supongo que es porque anulo el constructor de Setting. ¿Hay alguna forma en que pueda llamar al constructor de los padres también?

Respuesta

16

Sólo tiene que llamar usando parent ::

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

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

Tener un vistazo a la manual(Constructors and Destructors)!

+7

es mejor llamar al constructor principal antes que todas las instrucciones en el constructor hijo, por lo tanto, estamos seguros de que el objeto padre está listo para usar. –

+0

@Tomasz Kowalczyk ¿Lo es? Bueno, cambié mi respuesta para reflejar esto, ¡gracias! :) – Iznogood

+0

@Thomasz Eso depende completamente de lo que los padres y los niños constructores deben hacer. No es * siempre * mejor. – deceze

0

Además: debe saber que este comportamiento de PHP no es exclusivo de la función __construct().

Cuestiones relacionadas