Как использовать Dependency Injection для библиотеки, которые используют PSR-0

Обновить

April 2019

Просмотры

50 раз

1

У меня есть проблема с DI в service.yml файл, мой файл содержит следующий код:

...
...
AppBundle\Providers\BuilderInterface:
    class: AppBundle\Providers\Builder
    arguments:
        $service: '@Google_Service_Bigquery'
        $job: '@Google_Service_Bigquery_Job'
        $jobConfExtract: @Google_Service_Bigquery_JobConfigurationExtract'
        $jobConf: '@Google_Service_Bigquery_JobConfiguration'
...
...

но, Symfony 3.4 показать мне эту ошибку:

Cannot autowire service "AppBundle\Providers\Builder": argument "$service" of method "__construct()" references class "Google_Service_Bigquery" but no such service exists. It cannot be auto-registered because it is from a different root namespace.

Я открываю composer.json в библиотеке Google:

"autoload": {
    "psr-0": {
        "Google_Service_": "src"
    }
}

Они используют PSR-0 для классов автозагрузки, но в Symfony 3 не работает.

Как я могу исправить эту неприятность?

1 ответы

0

Register mentioned class as a service:

Google_Service_Bigquery: ~

This is an equivalent of:

Google_Service_Bigquery:
  class: Google_Service_Bigquery

then you can remove the line from the argument list as it will be auto-wired:

$service: '@Google_Service_Bigquery'