问题描述
我有一个 Field 类,它必须在不同的其他字段上进行多次扩展,我们称它们为 ChildFieldOne 和 ChildFieldTwo,依此类推。
其中一些子字段不需要声明 __constructor,因为与扩展 Field 类相同。但其中许多必须是自己的 __constructor 才能执行其他操作。
class Field
{
public function __construct(string $name,array $parameters = [],int $index = 0)
{
... do Field stuff
}
}
class ChildFieldOne extends Field
{
}
class ChildFieldTwo extends Field
{
public function __construct(string $name,int $index = 0)
{
parent::__construct($name,$parameters,$index)
... do ChildFieldTwo extra stuff
}
}
假设我必须在 Field 的构造函数上添加一个新参数,我还必须手动将它们添加到每个子类。我有大约 20 个扩展类,它们有自己的构造函数,它们调用父类,然后做自己的事情。在每个类上添加“Field $parent = null”是一团糟。
class Field
{
public function __construct(string $name,int $index = 0,Field $parent = null)
{
... do Field stuff
}
}
class ChildFieldTwo extends Field
{
public function __construct(string $name,Field $parent = null)
{
parent::__construct($name,$index,$parent)
... do ChildFieldTwo extra stuff
}
}
有没有办法像这样声明扩展类?
class ChildFieldTwo extends Field
{
public function __construct(... $args)
{
parent::__construct($args)
... do ChildFieldTwo extra stuff
}
}
我尝试过类似的方法,但由于 $args 是一个数组,因此出现了关于字段类型差异的错误。我怎么能做我需要的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)