如何对使用 PSR-0 的库使用依赖注入

How use Dependency Injection for a library which use PSR-0

我在 service.yml 文件中遇到 DI 问题,我的文件包含以下代码:

...
...
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.

我在 Google 库中打开 composer.json:

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

他们使用 PSR-0 自动加载 类,但在 Symfony 3 中它不起作用。

我该如何解决这个问题?

注册提到 class 作为一项服务:

Google_Service_Bigquery: ~

这相当于:

Google_Service_Bigquery:
  class: Google_Service_Bigquery

然后您可以从参数列表中删除该行,因为它将是 auto-wired:

$service: '@Google_Service_Bigquery'