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

How to read parameters from parameters.yml in a service?

我创建了一个服务,我需要从 parameters.yml 读取一些参数,到目前为止我只能通过容器读取参数,我已经将容器注入我的服务,我知道注入容器不是好的做法,我应该注入必需的 services/components,但是我无法弄清楚如何在不将容器注入服务的情况下从 parameters.yml 读取参数,并且然后在容器的帮助下读取参数。 你能指导我寻找替代解决方案吗?

编辑:

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

谢谢。

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

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

希望对您有所帮助

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

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

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

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