如何从服务中的parameters.yml读取参数?

时间:2015-01-16 06:44:41

标签: symfony

我已经创建了一个服务,我需要从parameters.yml读取一些参数,到目前为止我只能通过容器读取参数,我已将容器注入我的服务,我知道& #39;不是注入容器的好习惯而是我应该注入所需的服务/组件,但是我无法找到从parameters.yml读取参数的方法而不将容器注入服务然后在帮助下读取参数容器。 你能指导我一个替代解决方案吗?

修改

我有很长的参数列表,大约12-15,我在parameters.yml中存储API的速率限制选项,以便它们可以轻松配置

感谢。

3 个答案:

答案 0 :(得分:5)

由于你有一个很长的列表,一个接一个地注入这些参数的参数会很苛刻,但你可以注入一系列参数。

parameters.yml

parameters:
    array_name:
        param1: value1
        param2: value2
        ...

services.yml

services:
    your_service:
        class: Acme\DemoBundle\Class
        arguments: [%array_name%]

您的服务:

public function __construct(array $parameters)
{
    //access $parameters['param1'], $parameters['param2']
}

答案 1 :(得分:1)

您只需将其传递给服务定义即可。作为此xml定义中的示例:

    <service id="amce.example_service" class="Acme\DemoBundle\Service\Example">
        <argument type="service" id="templating" />
        <argument>%my_from_parameters%</argument>
    </service>

希望这个帮助

答案 2 :(得分:0)

您可以将参数实际传递到您的服务中。像这样:

service_name:
    class: <pathToClass>
    arguments:
        - %<parameter-name>%