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

问题描述

| 我有一个名为display的类,它扩展了Layout类,并扩展了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?     

解决方法

        如果您的父类中具有
loadHTMLfile
函数,则子类将继承它。因此,您应该能够:
class Display extends Layout {

    public function displayData(){

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

    }

}
    ,        
__construct()
是在实例化对象时调用的魔术方法。 调用它与使用
new
运算符不同。 以我的经验,当需要父类的构造函数时,我只在子类的
__construct()
内使用过
parent::__construct()
。     ,        这是不一样的,因为php中的构造函数不会返回任何内容     ,        您通常在子类的构造函数中调用父类的构造函数。您正在使用
displayData()
方法调用它。如果您在子类构造函数中执行其他工作,则仅需要在子类构造函数中显式调用父类的构造函数。直接继承而无需更改意味着您无需调用父构造函数。 调用父构造函数不会像实例化对象那样返回值(对象)。