Как я могу получить услугу, которая является синтетической? - PullRequest
0 голосов
/ 02 сентября 2018

Я новичок в Symfony, как я могу получить сервис, который является синтетическим? Я пробовал с приведенным ниже кодом сервис не существует:

Symfony3.

service.yml

app_coder:
  my_provider:
    acme:
      factory: factory_path
  synthetic : true
  public: true

Контроллер

$this->container->get('app_coder.my_provider.acme')

извините за плохой английский.

1 Ответ

0 голосов
/ 14 сентября 2018

Если вы используете синтетический сервис, вы должны сначала установить экземпляр сервиса в контейнер, как указано в docs . Чтобы сделать вещи более гибкими, вы можете сначала проверить, существует ли экземпляр, и установить, если нет. Так что-то вроде этого может помочь вам:

if ($container->hasDefinition('app_coder.my_provider')) {
    $container->set('app_coder.my_provider', new MyProviderService());
}

И после того, как он был установлен, вы можете получить его:

$this->container->get('app_coder.my_provider')
...