一个简单的问题,以下是否有意义?
B类扩展了A类
A类构造函数:
function __construct(){
//do something
}
B类构造函数:
function __construct(){
parent::__construct();
}
在这种情况下,完全实现子构造函数有什么显着优势吗?
我只能想到:
知道在编码或结构化等方面是否有任何显着优势会很有趣。
答案 0 :(得分:4)
您希望在子类(子类)中调用父构造函数的唯一时间是在构造函数中添加自定义代码。
在您的示例中,您可以在B类中完全省略__construct()方法。
但是你可能想要这样做:
class A {
function __construct() {
run_a_function();
$this->set = "a variable";
}
}
class B {
function __construct() {
run_a_function_specific_to_class_b();
$this->set = "a variable specific to class b";
// now call the parent constructor
parent::__construct();
}
}
答案 1 :(得分:0)
没有。如果所有构造函数(或任何方法)都调用同名的parent
方法,则没有任何优势。更多代码。
答案 2 :(得分:0)
本地构造函数会覆盖其父级:
<?php
class Blog extends CI_Controller {
public function __construct()
{
parent::__construct();
// Your own constructor code
}
}
?>
如果子类中有__construct()方法,则必须显式调用父构造函数。
如果您不想在子构造函数中运行任何内容,请不要在子项中指定构造函数方法,并且将自动调用父项构造函数。