我想改变我的服务以使用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
您可以为您的服务设置手动参数。其余的论点应该是自动配送的。你的services.yml
应该是这样的
services:
#...
App\Some\Service:
arguments:
$arg1: 'arg1'
Here你可以阅读更多关于手动连接参数的信息。
我用单引号改变了我的服务并且它有效
App\MyBundle\Lib\GraphLib:
arguments:
$carsLib: '@App\MyBundle\Lib\CarLib'
$busLib: '@App\MyBundle\Lib\BusLib'
$rootdir: '%kernel.root_dir%'
$translator: '@translator'
$version: '%version%'