2010-09-10 129 views
9

我有以下两个类。在PHP中调用父类的构造函数

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

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

$page = new PageManager(); 

我认为这样可以正常工作,但它只运行PageManager的构造函数。我假设这是因为我重写了设置的构造函数。有什么方法可以调用父类的构造函数吗?

回答

16

只是把它使用父::

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

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

看一看的manual(Constructors and Destructors)

+7

最好在子构造函数中的所有指令之前调用父构造函数,因此我们确信父对象已准备好使用。 – 2010-09-10 01:02:04

+0

@Tomasz Kowalczyk是吗?那么我改变了我的答案,以反映这一点,谢谢! :) – Iznogood 2010-09-10 01:08:23

+0

@Thomasz这完全取决于父母和孩子的构造函数应该做什么。它不总是*更好。 – deceze 2010-09-10 01:11:53

0

另外:你应该知道PHP的这种行为并不是唯一的__construct()函数。

相关问题