我有两节课:
class BaseClass
{
public function __construct()
{
$this->init();
}
private function init()
{
//dosomething
}
}
class Myclass extends BaseClass
{
public function __construct()
{
}
}
现在当我创建:
$myclass = new Myclass;
函数init没有运行,有人可以帮帮我吗?
答案 0 :(得分:5)
这是因为您在子类中覆盖了构造函数。当你没有处理任何与父母构造函数不同的任务或者像你那样调用你的父母构造函数时,就把它留下来
class Myclass extends BaseClass
{
public function __construct()
{
parent::__construct(); // Call the parents constructor
// Do some stuff that explicitly belongs to the child class
}
}
让我们来看看PHP文档对它的评价:
注意:如果子类定义了构造函数,则不会隐式调用父构造函数。为了运行父构造函数,需要在子构造函数中调用parent :: __ construct()。如果子进程没有定义构造函数,那么它可以像普通的类方法一样从父类继承(如果它没有被声明为私有)。
进一步阅读: