@frytempa

Как через контейнер подкинуть нужные классы?

Есть метод в контролере, с фронта приходит 2 параметра, например, type и param.
Есть сервис в который нужно в зависимости от двух этих параметров подкинуть в конструктор нужные реализации интерфейсов.

class Controller
{
    public function index(Request $request, Service $service)
    {
        return $service->run();
    }
}

class Service
{
    protected $typeClass;
    protected $paramClass;
    public function __constructor(IType, $typeClass, IParam $paramClass)
    {
        $this->typeClass = $typeClass;
         $this->paramClass = $paramClass;
    }
}


Сейчас используется примерно так
public function index(Request $request, ServiceBuilder $builder)
    {
        $service = $builder->get($request->get('type'), $request->get('param'));

        return $service->run()
    }


Есть ли решение лучше не используя сервис локатор?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 1
А такой способ не подходит?
class Controller
{
    public function index(Request $request)
    {
        return (new Service($request->get('type'), $request->get('param')))->run();
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы