【发布时间】:2013-05-13 14:45:07
【问题描述】:
是否可以在 Symfony2 中通过从另一个服务注入数据来配置服务?例如,通过调用另一个服务的 getter?
在我的具体情况下,我正在创建一个可以处理可翻译实体字段的(可重用)服务。为此,我需要应用程序中可用语言环境的列表。我查看了其他一些也适用于语言环境的捆绑包,但它们总是使用配置中的静态数组。例如:
a2lix_translation_form:
locales: [en, fr, nl]
此配置通常通过捆绑配置以构造函数参数或设置器的形式映射到服务。例如:
class SomeService {
function __construct(array $locales) { ... }
// or
function setLocales(array $locales) { ... }
}
但在我的情况下,可用语言环境的列表并不总是静态的,而且通常来自数据库。我在我的应用程序中创建了一个Locale 服务,其方法getLocales 返回一个数组。但是如何将该数组放入需要它的服务中?
我正在创建的需要语言环境列表的服务被拆分为一个单独的可重用包。我不想直接注入Locale 服务,因为该服务特定于应用程序,而不是我正在创建的包。我希望我的捆绑包的用户能够提供静态的语言环境列表,或指向具有所有语言环境的服务。
【问题讨论】:
标签: symfony configuration dependency-injection