Symfony 3.3更改服务以使用autowire

问题描述 投票:0回答:2

我想改变我的服务以使用symfony 3的autowire功能。我使它适用于大多数,但我仍然使用一些参数调查服务。

对于使用其他服务的服务,我只是在autowire配置后从我的服务文件中删除它们。但我仍然有这样的服务

App\MyBundle\Lib\GraphLib: ["@serv.carslib","@serv.buslib","%kernel.root_dir%","@translator","%version%"]

我的构造函数看起来像这样

public function __construct(CarsLib $carsLib, BusLib $busLib, $rootdir, TranslatorInterface $translator, $version){

有没有办法用参数自动装配这项服务?如果不是,我怎么能改变参数@ serv.carslib和@ serv.buslib。因为这些服务是自动装配的,所以无法做到这样的工作

App\MyBundle\Lib\GraphLib: ["@App\MyBundle\Lib\CarLib","@App\MyBundle\Lib\BusLib","%kernel.root_dir%","@translator","%version%"]

编辑1:我尝试改变我的服务,但我有一个错误'服务依赖于不存在的服务'

App\MyBundle\Lib\GraphLib: 
    arguments:
        $carsLib: "@App\MyBundle\Lib\CarLib"
        $busLib: "@App\MyBundle\Lib\BusLib"
        $rootdir: "%kernel.root_dir%"
        $translator: "@translator"
        $version: "%version%"

我也尝试这样的事情

App\MyBundle\Lib\GraphLib: 
    arguments:
        $rootdir: "%kernel.root_dir%"
        $version: "%version%"

我改变了控制器中的params命令

public function __construct(CarsLib $carsLib, BusLib $busLib, TranslatorInterface $translator, $rootdir, $version){

但是我有这个错误:必须先定义服务参数1的无效构造函数参数4

php symfony
2个回答
0
投票

您可以为您的服务设置手动参数。其余的论点应该是自动配送的。你的services.yml应该是这样的

services:
  #...

  App\Some\Service:
    arguments:
      $arg1: 'arg1'

Here你可以阅读更多关于手动连接参数的信息。


0
投票

我用单引号改变了我的服务并且它有效

App\MyBundle\Lib\GraphLib: 
arguments:
    $carsLib: '@App\MyBundle\Lib\CarLib'
    $busLib: '@App\MyBundle\Lib\BusLib'
    $rootdir: '%kernel.root_dir%'
    $translator: '@translator'
    $version: '%version%'
© www.soinside.com 2019 - 2024. All rights reserved.