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

时间:2012-02-06 18:12:00

标签: symfony

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 个答案:

答案 0 :(得分:1)

回答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>