который принимает строку на вход и возвращает какой-то сервис по условию.
if ($context === 'foo') {
return new Foo();
} elseif ($context === 'bar') {
return new Bar();
}
Проблема в том, что сервисы Foo и Bar принимают в конструкторе репозитории. Как в симфони это решается?
доставай Foo и Bar с контейнера)
class ServiceFactory { public function (Repos1 $repos1, Repos2 $repos2) { /// .... } public function create(string $type): ServiceInterface { switch ($type) { case 'foo': return new Foo($this->repos1); case 'bar': return new Bar($this->repos1, $this->repos2); } } }
действительно!
спасибо, работает)
Обсуждают сегодня