Symfony 3.3更改服务以使用autowire

时间:2017-12-29 13:19:54

标签: php symfony

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

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

RECORD

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

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

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

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

编辑1:我尝试更改我的服务,但我发现错误'该服务依赖于不存在的服务'

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

我也尝试这样的事情

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

我改变了控制器中的params顺序,就像这样

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

但是我有这个错误:必须在

之前定义服务参数1的无效构造函数参数4

2 个答案:

答案 0 :(得分:0)

您可以为您的服务设置手动参数。其余的论点应该是自动配送的。您的0, 1应该是这样的

services.yml

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

答案 1 :(得分:0)

我用单引号更改我的服务,它可以正常工作

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