目前我正在开发一个PHP示例,并且作为依赖注入器,我正在使用Auryn。
我有以下类来表示API调用的具体用例(例如,从数据库中获取所有用户,获取书籍或无效的api请求)。此类依赖ResponseMessageFactory
构建JSON响应的内容。
class NotValidApiCallUseCase implements Command{
private $responseMessageFactory;
public function __construct(ResponseMessageFactory $responseMessageFactory){
$this->responseMessageFactory = $responseMessageFactory;
}
public function execute(){
...stuff...
}
}
由于我在进行API调用时有许多可能的用例要解决,我的类负责将当前URL路由到特定的用例,使用工厂来构建具体的用例。
class UseCaseFactory{
public function __construct(ResponseMessageFactory $responseMessageFactory){
$this->responseMessageFactory = $responseMessageFactory;
}
public function build($type){
if($type == "INVALID_API_CALL"){
return new NotValidApiCallUseCase($this->responseMessageFactory);
}
... other if ...
}
}
但是,当我必须实例化一个用例时,就像我之前发布的NotValidApiCallUseCase
一样,我必须给他所有依赖项,所以我打破了我的依赖注入器的工作。
这是个坏主意吗?我不遵循注射器的主要目的吗?我该如何解决?