#php #arrays #symfony #dependency-injection #parameter-passing
#php #массивы #symfony #внедрение зависимости #передача параметров
Вопрос:
В документах symfony2 на http://symfony.com/doc/current/components/dependency_injection/parameters.html в нем говорится, что параметры (в определениях сервисов) могут быть определены как массивы, например:
parameters:
foo.class:"Foo"
foo.args:
- arg1
- arg2
Я хочу знать, как передать один элемент массива foo.args конструктору сервиса, т.е:
services:
foo:
class:"%foo.class%"
arguments:["%foo.args.1%"] //this line is in question.does this resolve to
//"arg1"?if not, what does?
Ответ №1:
Ваша текущая реализация не будет работать.
Внутри symfony попытался бы получить доступ к array['1']
(ключ = строка) вместо array[1]
(ключ = int).
Рассмотрите возможность использования фабрики сервисов, которая, в свою очередь, создает сервис с нужным элементом массива в качестве аргумента…
… или просто отфильтруйте элементы массива в конструкторе класса.
Комментарии:
1. Спасибо. и еще одно: итак, если бы ключи были строками, а массив был вложенным (имел более одного измерения), это сработало бы? просто спрашиваю это, потому что мне интересно, как он обрабатывает «точки» в имени параметра, чтобы определить, является ли это частью имени параметра или ключа.