Symfony:使用参数数组中的值作为服务参数

Symfony: Use a value within a parameter array as a service parameter

Symfony 3.4

我有一个如下所示的参数:

parameters.yml:

paramters:
    some_configuration:
        param1: value1
        param2: value2

我想将 some_configuration 参数中的值直接传递给服务,而不是 some_configuration 本身。像这样:

services.yml:

services:
    AppBundle\Service\MyService:
        arguments:
            $serviceparam: '%some_configuration.param2%'

这有可能吗?

services:
    AppBundle\Service\MyService:
        arguments:
            $serviceparam: '@=parameter("some_configuration")["param2"]'

高于 Symfony 2.7.3

在我见过的所有 Symfony 配置文件中,'parameters:' 下的条目始终是完全限定的。
我不完全明白这是为什么,但它可能会帮助您像这样在 parameters.yml 中编写条目:

parameters.yml:

parameters:
    some_configuration.param1: value1
    some_configuration.param2: value2

要在 service.yaml 中使用参数数组值,您可以将其用作普通参数(就像您写的那样!):

service.yaml

services:
    AppBundle\Service\MyService:
        arguments:
            $serviceparam: '%some_configuration.param2%'

在 symfony 2.7.3 中:

可以通过以下方式完成:

services:
    AppBundle\Service\MyService:
        arguments:
            $serviceparam: ["@=container.getParameter('some_configuration')['param1']"]

It works for symfony 2.7.3
有关表达式语言的更多信息,请参见 symfony doc