symfony - 将安全上下文注入(inject)(实体监听器)类时的循环引用

标签 symfony dependency-injection

这里有两个问题说注入(inject)整个服务容器应该可以解决这个问题。但是问题......见下文(注意尝试2和3之间的区别)......

试试 1

public function __construct(SecurityContext $securityContext) {
    $this->securityContext = $securityContext);  
}  

类(class)引用。好的 ...

试试 2
public function __construct(ContainerInterface $container) {
    $this->securityContext = $container->get('security.context');  
}  

循环引用( 为什么?,我像在尝试 3 中一样注入(inject)容器,除了我只获得了安全上下文)

试试 3
public function __construct(ContainerInterface $container) {
    $this->container = $container;  
}  

作品。

最佳答案

发生这种情况是因为您的安全上下文取决于此监听器,可能是通过将实体管理器注入(inject)用户提供程序。最好的解决方案是将容器注入(inject)到监听器中并懒惰地访问安全上下文。

我通常不喜欢将整个容器注入(inject)到服务中,但对 Doctrine 监听器异常(exception),因为它们是急切加载的,因此应该尽可能地懒惰。

关于symfony - 将安全上下文注入(inject)(实体监听器)类时的循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708822/

相关文章:

php - 一个数据库中具有不同字符编码的表。学说问题

dependency-injection - 测试驱动开发(TDD)确保依赖注入(inject)(DI)?

javascript - Angular 单元测试: Unknown provider: $$qProvider <- $$q <- $interval

c++ - 如何实现一个支持模板协变的泛型工厂?

php - Slim 3 框架 : mysql instance good practice

php - 具有不同字段的 Symfony CollectionType

php - 使用 composer 在自定义目录中安装包

php - 在事先不知道确切步数的情况下使用 Symfony 进度条

symfony - 带有FosElastic的Symfony主义如何从ORM和Elastic一起搜索?

android - 在 Android 中设置 Dagger 2 和项目组织