php – 如果子类没有定义构造函数,调用父构造函数?

PHP Constructors and Destructors documentation它说

Note: Parent constructors are not called implicitly if the child class
defines a constructor. In order to run a parent constructor, a call to
parent::__construct() within the child constructor is required.

但是,如果子类不调用构造函数,父构造函数是否仍然被调用?还是应该创建一个调用父构造函数的构造函数?

IE:

class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
   }
}
最佳答案
也许这是一个很明显的,但是一些环顾四周,直接回答这个问题令人惊讶的是不是很容易找到,所以这里是:

如果子类没有定义构造函数,那么父构造函数将被调用.

在下面的示例中,$obj仍将从BaseClass调用构造函数,因为SubClass从未调用构造函数.

class BaseClass {
    function __construct() {
       print "In BaseClass constructor\n";
    }
}

class SubClass extends BaseClass {
    //I do not have a constructor :(
}

$obj = new SubClass();

转载注明原文:php – 如果子类没有定义构造函数,调用父构造函数? - 代码日志