【问题标题】:How to read parameters from parameters.yml in a service?如何从服务中的 parameters.yml 读取参数?
【发布时间】:2015-03-14 17:48:29
【问题描述】:

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

编辑:

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

谢谢。

【问题讨论】:

    标签: symfony


    【解决方案1】:

    由于您的列表很长,因此逐个注入这些参数会很苛刻,但您可以注入参数数组。

    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']
    }
    

    【讨论】:

    • 谢谢你的回答!!
    【解决方案2】:

    您可以简单地在服务定义中传递它。作为此 xml 定义中的示例:

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

    希望有帮助

    【讨论】:

    • 我可以这样做,但是我有一长串参数,大约在 12-15 之间,我将 API 的速率限制选项存储在 parameters.yml 中,以便可以轻松配置它们,列表可以去在增加
    • 将所有参数包含在数组配置中,并以相同的方式将其传递给服务。我可以在六个小时之前给你发一个例子,如果你需要,请告诉我
    • 感谢@Matteo 的回复 Tomasz 在他的回答中发布了一个示例
    • 正是我的意思:)
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      相关资源
      最近更新 更多