关于Symfony 2服务容器参数的问题

关于Symfony 2服务容器参数的问题,symfony,Symfony,1。将参数传递到服务中? 如果尚未在services.xml(或yaml)中定义,则将参数传递到服务的唯一方法是: $container->setParameter('loader', $loader); $container->get('myservice'); 我想这样的话,加载器将可用于所有服务,而不仅仅是“myservice” 2。将对象数组传递到服务? Template/DelegatingEngine类将引擎对象数组带入构造函数,我不知道应该如何在xml文件中定义它:

1。将参数传递到服务中? 如果尚未在services.xml(或yaml)中定义,则将参数传递到服务的唯一方法是:

$container->setParameter('loader', $loader);
$container->get('myservice');
我想这样的话,加载器将可用于所有服务,而不仅仅是“myservice”

2。将对象数组传递到服务? Template/DelegatingEngine类将引擎对象数组带入构造函数,我不知道应该如何在xml文件中定义它:

public function __construct(array $engines = array())
    {
        $this->engines = array();
        foreach ($engines as $engine) {
            $this->addEngine($engine);
        }
    }
我应该把什么放进盒子里

<service id="myCustomeFramework.TemplateEngine" class="path\to\DelegateEngine" scope="prototype">
            <argument>how can i pass an array of engines here?</argument>
        </service> 

我如何在这里传递一组引擎?

答案1

是的,它将可用于所有使用该参数的服务以及设置该参数后调用的服务

答案2

要使用xml将数组作为参数传递给服务,必须采用以下方式:

<service id="myCustomeFramework.TemplateEngine" class="path\to\DelegateEngine" scope="prototype">
    <argument type="collection">
        <argument key="key">value</argument>
        <argument key="key">value</argument>
        <argument key="key">value</argument>
    </argument>
</service>

价值
价值
价值

谢谢artberri,既然值应该传递到引擎对象中,那么我应该在值字段中输入什么?@mr1031011,你找到解决方案了吗?@VidyVideni也许你可以作为服务传递,或者使用工厂传递?