2010-09-10 6 views
9

Ich habe die folgenden zwei Klassen.Aufruf Eltern Konstruktor in PHP

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

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

$page = new PageManager(); 

Ich dachte, das würde gut funktionieren, aber es führt nur den Konstruktor von PageManager. Ich gehe davon aus, dass ich den Konstruktor der Einstellung außer Kraft setze. Gibt es eine Möglichkeit, wie ich den Konstruktor der Eltern auch aufrufen kann?

Antwort

16

Einfach Elternteil mit rufen ::

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

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

Werfen Sie einen Blick auf die manual(Constructors and Destructors)!

+7

Es ist besser, den Elternkonstruktor vor allen Anweisungen im Kindkonstruktor aufzurufen, daher sind wir sicher, dass das Elternobjekt zur Verwendung bereit ist. –

+0

@Tomasz Kowalczyk Ist es? Nun, ich habe meine Antwort geändert, um das zu reflektieren, danke! :) – Iznogood

+0

@Thomasz Das hängt völlig davon ab, was der Eltern- und der Kindkonstruktor tun sollen. Es ist nicht * immer * besser. – deceze

0

Zusätzlich: Sie sollten wissen, dass dieses Verhalten von PHP nicht auf die __construct() - Funktion beschränkt ist.