我有一些服务,它们在其他服务中也有一些依赖关系,因此,我决定在每个服务中注入@service_container
,而不是非常具体的依赖项。结果是这样的:
class InternalComponentHelper implements ContainerAwareInterface
{
use ContainerAwareTrait;
public function somefunction(){
//Do something with the container
}
}
然后在我的服务定义中
intcomponent_helper:
class: AplicacionBaseBundle\DependencyInjection\Helpers\InternalComponentHelper
calls:
- [setContainer, ["@service_container"]]
我需要知道的是,这是一种不好的做法,如果有的话会造成什么样的伤害或性能问题。顺便说一下,没有循环依赖。
答案 0 :(得分:1)
完全注入服务容器被认为是不好的做法。根据这个blog post:
这种接缝很简单,直接使用容器并不是一个好习惯,因为它隐藏了类的依赖关系,使它们与外部配置相结合,因此更难以测试,更难以审查等。