【发布时间】:2013-05-19 07:51:22
【问题描述】:
问题很简单,但是... 所以我们有主要的服务:
class ManagerOne {}
还有几个我们想在主服务中使用的其他服务:
class ServiceOne{}
class ServiceTwo{}
class ServiceThree{}
class ServiceFour{}
...
每个命名为(在 services.yml 中)
service.one
service.two
service.three
service.four
...
服务的位置不同,不在一个文件夹中(但我认为自定义自动加载器不会有很大的麻烦)。
关于手册,我们可以通过主服务(ManagerOne)中的 __construct() 注入它们,但是如果我们有 20 个这样的服务需要注入呢?或者只使用我们需要的。在服务中将它们描述为简单的注入? O.o 我认为这不是一个好主意......我们也可以注入容器,仅此而已。但!到处都有人说注入容器是最糟糕的解决方案。
我想要什么。我需要 ManagerOne 服务的方法,它将通过“service.name”或“路径”加载我需要的服务,并带有检查器“服务存在”。
【问题讨论】:
-
如果需要连接这20个服务,那就是架构不好的标志。
-
例如我有一个项目。那有 20 个自定义更新程序。而且我无法将它们组合起来并制作一个 factoryClass。重点是我(在 ManagerOne 中)检查项目,获取它对更新程序的访问权限,然后才开始加载它需要的服务。之后通过ManagerOne,我可以调用更新器方法...最后我们有“独立”更新器(我需要这个)和可以使用它们的管理器类。
标签: symfony service autoloader