В настоящее время я работаю над примером 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
Я должен дать ему все зависимости, поэтому я нарушаю работу моего инжектора зависимостей.
Это плохая идея? Не следую ли я основной цели инжектора? Как бы я решил это?
Задача ещё не решена.
Других решений пока нет …