我想知道是否有可能在 child 的 __construct() 之前调用 parent __construct() 并在 PHP 中继承。
例子:
class Tag {
__construct() {
// Called first.
}
}
class Form extends Tag {
__construct() {
// Called second.
}
}
new Form();
理想情况下,我可以在他们之间做点什么。如果这不可能,是否有替代方法可以让我这样做?
我想这样做的原因是能够加载一组特定于标签的默认设置,当调用 __construct() 时 Form 可以使用这些标签。
编辑:抱歉忘了添加这个。我宁愿不从子类调用父类。这仅仅是因为当您将其作为参数传递时,它会向 child 公开一些私有(private)数据(对于 parent )
这就是我想做的:
$tag = new Tag($privateInfo, $publicInfo);
$tag->extend(new Form()); // Ideal function, prob doesn't work with inheritance.
Tag.php
class Tag {
private $privateInfo;
public $publicInfo;
__construct($private, $public) {
$this->privateInfo = $private;
$this->publicInfo = $public;
}
}
Form.php
class Form extends Tag {
__construct() {
echo $this->publicInfo;
}
}
有意义吗?
谢谢! 马特·穆勒
最佳答案
只需在 child 中调用 parent::__construct。
class Form extends Tag
{
function __construct()
{
parent::__construct();
// Called second.
}
}
关于php - 在 PHP 中的子构造函数之前调用父构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079883/