继承问题:在子类中调用父构造函数

时间:2011-06-10 00:58:18

标签: php inheritance domdocument extends construct

我有一个名为显示的类,它扩展了类布局,扩展了类 DOMDocument 。我得到:致命错误:在非对象上调用成员函数loadHTMLFile()。代码如下:

在index.php中:

 $dom = new Display();
 $dom->displayData();

在Display.php中:

class Display extends Layout {

    public function displayData(){

    $dom = parent::__construct();
    $dom->loadHTMLfile("afile.html");
    echo $dom->saveHTML();

    }

}

我的问题是:当我调用 parent :: __ construct()时,这与使用“ new DOMDocument ”不一样,因为Display类扩展了Layout和DOMDocument?谢谢

4 个答案:

答案 0 :(得分:3)

__construct()是一种在实例化对象时调用的魔术方法。

调用它与使用new运算符相同。

根据我的经验,当我需要调用父类的构造函数时,我只在子类的parent::__construct()内使用__construct()

答案 1 :(得分:2)

如果父类中有loadHTMLfile函数,子类将继承它。所以你应该能够做到:

class Display extends Layout {

    public function displayData(){

        $this->loadHTMLfile("afile.html");
        echo $this->saveHTML();

    }

}

答案 2 :(得分:1)

它不一样,因为php 中的构造函数不返回任何内容

答案 3 :(得分:1)

您通常在子类的构造函数中调用父级的构造函数。您是在displayData()方法中调用它。如果在子类构造函数中执行其他工作,则只需要在子类构造函数中显式调用父构造函数。直接继承而不进行更改意味着您无需调用父构造函数。

调用父构造函数不会返回值(对象),因为实例化对象会。