【发布时间】:2012-10-22 19:44:37
【问题描述】:
假设我有两个服务:
get('my_first_service')
get('my_second_service')
我想做这样的事情:
$this->get('my_first_service')->doSomething($this->get('my_second_service'));
这是一些初始化代码,必须在项目的任何地方都处于活动状态。据我所知,我有几个选择(这两种服务都来自供应商目录(我自己没有写过)):
- 在 app.php 和/或 app_dev.php 中添加上述代码(有一些修改)
- 将上述代码添加到每个控制器操作中
- 以服务作为参数创建一个服务,并在构造函数中添加上述代码
第一个选项似乎有点“不寻常”,因为我没有链接编辑 app.php 文件以获得链接。第二个选项效率太低,因为我需要为数十个操作执行此操作。第三个动作似乎更好,但我仍然需要从某个地方调用此服务才能执行构造函数吗?
我觉得我错过了一种可能性......这种初始化代码一定有更好的地方吧?
【问题讨论】:
-
如果
my_first_service依赖于my_second_service,那么您应该通过DIC 提供的任何必要注入方法将第一个服务配置为注入第二个服务。 -
如果问题是为每个请求自动创建实例,请将其标记为listener。
标签: php symfony dependency-injection