不带参数的扩展构造函数

问题描述

我有一个 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...