Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
呼叫家长';PHP中的s构造函数_Php_Oop_Subclass - Fatal编程技术网

呼叫家长';PHP中的s构造函数

呼叫家长';PHP中的s构造函数,php,oop,subclass,Php,Oop,Subclass,我有以下两门课 class Settings { function __CONSTRUCT() { echo "Settings Construct"; } } class PageManager extends Settings { function __CONSTRUCT() { echo "PageManager Construct"; } } $page = new PageManager(); 我认为

我有以下两门课

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

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

$page = new PageManager();

我认为这样做很好,但它只运行PageManager的构造函数。我假设这是因为我重写了设置的构造函数。还有什么方法可以调用父级的构造函数吗?

只需使用parent:调用它:

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

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

看一看这张照片

此外:您应该知道PHP的这种行为并不是_construct()函数所独有的。

最好在子构造函数中的所有指令之前调用父构造函数,因此我们确信父对象已准备好使用。@Tomasz Kowalczyk是吗?我改变了我的答案以反映这一点,所以谢谢!:)@这完全取决于父构造函数和子构造函数应该做什么。它并不总是更好。@deceze-是的,你是对的,但在大多数情况下,先调用它是更好的选择,尤其是当我们看不到基类实现时。@Tomasz Kowalczyk投了赞成票:)