Symfony2从config.yml向控制器注入一组服务

时间:2014-10-02 13:33:08

标签: symfony service dependency-injection

如何从config.yml注入一系列服务,将类名(带名称空间)提供给控制器?我需要从控制器中的每个服务运行一个函数。目前我在控制器中使用$this->get('service');,但我需要让控制器独立于服务。有没有办法做到这一点?

修改

我不知道名字和将注入多少服务,尽管它们都实现了接口。

EDIT2

好吧,可能我没有正确表达我的想法。我有一个名为Widgets的包。它有一个小部件名称数组,每个小部件的显示小部件持有者和AJAX我获取内容并显示它。目前我在Widget控制器中硬编码了一些小部件的定义(Ajax的标题和id),还有一些通过从另一个bundle的某些控制器调用getWidgetList来检索。好吧,我需要窗口小部件的列表不会在窗口小部件包中进行硬编码。我需要一种从config.yml传递此列表的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

一般来说,注入一系列服务并不是正确的方法(即使有办法实现,我认为不存在)

您不想编写依赖于容器的代码的全部原因是为了保持代码库的灵活性,轻松性和可测试性。实际上,可变数组服务只是一个迷你容器,所以如果你实现了,你只是缩小问题的范围,而不是消除它。您仍然在使您的代码依赖于任意一堆服务。

我强烈建议明确定义控制器所需的每项服务(如Rufinus和Cerad评论中的链接所述),或者使用类似jms/di-extra-bundle的内容。

更新

也许您需要对可用的配置选项进行更多研究?

http://symfony.com/doc/current/cookbook/bundles/configuration.html