我已经多次阅读Symfony2
书中的服务容器章节,并阅读了SO答案和其他关于该主题的资源,但我似乎仍然不明白。
到目前为止,我所读到的一切都在我的脑海中钻入了一个主要的真理:容器本身(实际上)永远不应该直接注入到依赖对象中。这似乎可以很好地为其他服务提供依赖关系,但如果我的模型中的实体想要检查当前的安全上下文,该怎么办?
我知道在这种情况下,我可以实现ContainerAwareInterface
,然后从容器感知上下文调用setContainer()
来访问容器本身,但这不是与从服务配置中注入容器一样吗?
您所描述的只是糟糕的设计。您的模型不应该依赖于服务容器。如果你需要执行一些安全检查,那么你会创建一个注入了必要依赖项的服务,然后将你的模型对象传递给它
根据您的示例,听起来您正在尝试进行验证,如下所述http://symfony.com/doc/master/book/validation.html和我说的一样。