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 關注
- 132 瀏覽
添加回答
舉報