在PHP中调用父类构造函数

11
我有以下两个类。
class Settings
{
    function __CONSTRUCT()
    {
        echo "Settings Construct";
    }
}

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

$page = new PageManager();

我原以为这会很好用,但它只运行了PageManager的构造函数。我猜想这是因为我覆盖了Setting的构造函数。有没有办法同时调用父类的构造函数呢?

2个回答

17

只需使用parent::调用它。

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

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

看一下手册(构造函数和析构函数)!


7
在子类构造函数中的所有指令之前调用父类构造函数,这样我们可以确保父对象已经准备好使用。 - Tomasz Kowalczyk
@Tomasz Kowalczyk 真的吗?好的,我已经修改了我的答案以反映这一点,谢谢! :) - Iznogood
@Thomasz 这完全取决于父类和子类构造函数的作用。这并不总是更好。 - deceze
@deceze - 是的,你说得对,但在大多数情况下,首先调用它是更好的选择,特别是如果我们看不到基类的实现。 - Tomasz Kowalczyk
@Tomasz Kowalczyk 点赞了 :) - Iznogood

0
此外,您应该知道,PHP 的这种行为并不局限于 __construct() 函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接