1 回答
TA贡献1828条经验 获得超3个赞
使用类型注释绝对没有任何问题。这就是他们存在的目的。
但我同意正确的类型提示更好、更稳健。
但为此,您不能使用动态实例化。请改用抽象工厂。这将使代码更清晰、更灵活、更明确。
abstract class ParameterFactory {
public static parameter($type, $request, $builder, $configModel) : AbstractParameter
{
switch ($type) {
case SearchParameter::class:
return new SearchParameter($request, $builder, $configModel);
case ReturnsParameter::class:
return new ReturnsParameter($request, $builder, $configModel);
case OrderByParameter::class:
return new OrderByParameter($request, $builder, $configModel);
case RelationsParameter::class:
return new OrderByParameter($request, $builder, $configModel);
}
throw new \InvalidArgumentException("Class $type not supported by factory");
}
}
然后你会这样做:
foreach ($this->requestParameters as $parameter) {
$instance = ParameterFactory::parameter(parameter, $this->request, $this->builder, $this->configModel);
$instance->appendQuery();
}
顺便说一句,我会ParameterInterface为此创建一个类型提示而不是一个抽象类。
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报