构造函数是继承的还是属于它们所定义的类?我只看到了子类构造函数的例子,它们调用了超类的构造函数。这是我目前的代码,它可以提供一些有关正在发生的事情的提示。 (我将根据您的回复更改代码。如果我可以使用超类的构造函数,我将不为每个子类定义构造函数,并从每个子类调用超类的构造函数。
abstract class view
{
public $vieverid;
function __construct($viewerid) {
$this->viewer = $viewerid;
}
}
class viewactor extends view{
function __construct($viewerid) {
$this->viewerid = $viewerid;
}
答案 0 :(得分:4)
根据我的理解,如果定义了子构造函数,PHP不会自动调用父的构造函数。否则它会。
在子构造函数中,您必须手动调用父的构造函数。
abstract class view
{
public $vieverid;
function __construct($viewerid) {
$this->viewer = $viewerid;
}
}
class viewactor extends view{
function __construct($viewerid) {
parent::__construct($viewerid); // manual call
// do your stuff here...
$this->viewerid = $viewerid;
}
答案 1 :(得分:3)
parent::__construct(params);
用于调用超类构造函数
PHP4
PHP不会自动调用基类的构造函数 派生类的构造函数。繁殖是你的责任 适当时对上游构造函数的调用。
PHP5
如果定义了新的构造函数,PHP不会调用基类的构造函数。 如果为派生类定义构造函数 繁殖是你的责任 适当时对上游构造函数的调用。 父:: __构建体(PARAMS)
构造
abstract class view
{
public $vieverid;
function __construct($viewerid) {
$this->vieverid= $viewerid;
}
}
class viewactor extends view{
function __construct($viewerid) {
parent::__construct($viewerid);
// Extra code if you want
}
}
class viewactor_construct extends view{
// Works in PHP5
}
答案 2 :(得分:1)
如果子类定义了构造函数,则不会隐式调用父构造函数。为了运行父构造函数,需要在子构造函数中调用parent :: __ construct()。