如何将依赖项(服务)正确地注入Symfony2中的非服务类


How do I properly inject dependencies (services) into non-service classes in Symfony2?

我已经多次阅读Symfony2书中的服务容器章节,并阅读了SO答案和其他关于该主题的资源,但我似乎仍然不明白。

到目前为止,我所读到的一切都在我的脑海中钻入了一个主要的真理:容器本身(实际上)永远不应该直接注入到依赖对象中。这似乎可以很好地为其他服务提供依赖关系,但如果我的模型中的实体想要检查当前的安全上下文,该怎么办?

我知道在这种情况下,我可以实现ContainerAwareInterface,然后从容器感知上下文调用setContainer()来访问容器本身,但这不是与从服务配置中注入容器一样吗?

您所描述的只是糟糕的设计。您的模型不应该依赖于服务容器。如果你需要执行一些安全检查,那么你会创建一个注入了必要依赖项的服务,然后将你的模型对象传递给它

根据您的示例,听起来您正在尝试进行验证,如下所述http://symfony.com/doc/master/book/validation.html和我说的一样。