在继承子类之后,如何在仍然使用它时覆盖父的构造函数?

时间:2009-12-31 11:38:46

标签: php oop

示例:我有一个名为ParentClass的类。 ParentClass有一个像这样的构造函数:

function __construct($tpl) {
    // do something with the $tpl
}

在创建ParentClass的新实例时,我必须提供这样的$ tpl参数:

$p = new ParentClass('index');

然后有一个ChildClass扩展ParentClass。我希望ChildClass的构造函数将$ tpl提供给ParentClass,但当然我不想只是ParentClass的实例,而是ChildClass的实例。

因此,在创建新的ChildClass实例时,我希望它看起来像:

$foo = new ChildClass();

但在内部,我希望它为ParentClass的构造函数提供'index'。

如何在PHP中实现这一目标?

4 个答案:

答案 0 :(得分:3)

class ChildClass extends ParentClass {
    public function __construct() {
        parent::__construct('index');
    }
}

答案 1 :(得分:1)

使用parent::__construct(),您可以调用parent的构造函数。

class ChildClass extends ParentClass
{
    function __construct()
    {
        parent::__construct('index');
    }
}

答案 2 :(得分:1)

试试这个:

class ChildClass extends ParentClass{
  function __construct($tpl) {
    parent::__construct($tpl);
  }
}

现在创建子类的实例:

$p = new ChildClass('index');
  

注意:在您的子课程中,您应该   包括父类。

答案 3 :(得分:1)

您可以在parent::_construct('index');构造函数中调用ChildClass。这将使用index构建基类。