Есть метод в контролере, с фронта приходит 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()
}
Есть ли решение лучше не используя сервис локатор?