Вопросы о параметрах сервисного контейнера Symfony 2 - PullRequest
0 голосов
/ 06 февраля 2012

1.Передача параметров в службу? Если это еще не определено в services.xml (или yaml), единственный способ передать параметры в службу:

$container->setParameter('loader', $loader);
$container->get('myservice');

Я полагаю, что такЗагрузчик будет доступен для ВСЕХ сервисов, а не только для «myservice»?

2.Передача массива объектов в службу? Класс Template / DelegatingEngine принимает массив объекта engine в конструктор, и я не знаю, как мне определить это в 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 Ответ

1 голос
/ 07 февраля 2012

Ответ 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...