PHP OOP,使用“干净”的子构造函数

时间:2011-10-27 12:16:02

标签: php oop

我对一个简单的PHP类扩展有疑问。当我有这个父类时:

<?php
class Parent
{
    protected $_args;

    public function __construct($args)
    {
        $this->_args = $args;
    }
}
?>

我想使用以下内容进行扩展:

<?php
class Child extends Parent
{
    public function __construct($args)
    {
        parent::__construct($args);

        /* Child constructor stuff goes here. */
    }
}
?>

我使用以下方法调用此子类:

new Child($args);

这一切都没有任何问题,但问题是:是否可以在子节点中有一个“干净”的构造函数,而不必将所有构造函数参数传递给父元素?我看到Kohana框架使用了这种技术,但我无法弄清楚如何去做。

1 个答案:

答案 0 :(得分:6)

您可以定义从父构造函数调用的init()方法。

class Parent
{
    protected $_args;

    public function __construct($args)
    {
        $this->_args = $args;

        $this->init();
    }

    protected function init() {}
}

class Child extends Parent
{
    protected function init()
    {
        // Do stuff...
    }
}