检测到服务"security.context"的循环引用

 且羞且笑且动心细 发布于 2023-01-10 10:16

我试着注入模板服务,这就是我得到的.


    
    

2014-06-10 12-37-10

如果我从依赖项中评论或删除模板服务,一切都运行良好.我看到了关于这个问题的老问题,但似乎我是目前唯一遇到这个问题的人.难道我做错了什么?

Composer.json

"symfony/symfony": "~2.4",
"twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~2.3",
"sensio/framework-extra-bundle": "~3.0",
"sensio/generator-bundle": "~2.3",
"incenteev/composer-parameter-handler": "~2.0",

Composer.lock

"name": "symfony/symfony",
"version": "v2.5.0",
...
"name": "twig/twig",
"version": "v1.15.1",

Slava Fomin .. 10

您应该始终尽量避免将容器直接注入您的服务.

我认为"循环引用"问题以及可能的性能问题的最佳解决方案是使用从Symfony 2.3开始提供的" Lazy Services "功能.

只需lazy在服务容器配置中标记依赖关系并安装ProxyManager Bridge(查看上面的Lazy Services文档中的详细信息).

我希望有所帮助,欢呼.

2 个回答
  • 您应该始终尽量避免将容器直接注入您的服务.

    我认为"循环引用"问题以及可能的性能问题的最佳解决方案是使用从Symfony 2.3开始提供的" Lazy Services "功能.

    只需lazy在服务容器配置中标记依赖关系并安装ProxyManager Bridge(查看上面的Lazy Services文档中的详细信息).

    我希望有所帮助,欢呼.

    2023-01-10 10:19 回答
  • 此解决方案是解决问题的快速方法.这可以避免,请阅读评论.

    对于这种特殊情况,最好将其ServiceContainer注入您的服务中.因为看起来你正在经历一个边缘情况,其中security.context已经注入到某些templating服务(例如帮助程序)中,然后在你的示例中将其间接注入(间接)到security.context.

    试试这个:

    <service id="myproject_notification.service.mail" class="%myproject_notification.service.mail.class%">
        <argument type="service" id="service_container" />
    </service>
    

    在类的构造函数中,使用如下:

    class YourMailerClass
    {
        protected $container; 
    
       public function __construct(ContainerInterface $container )
       {
         $this->container = $container; 
        } 
    
        public function sendMail()
        {
           $mailer = $this->container->get('mailer');
           $templating = $this->container->get('templating');
        }
    
    }
    

    请参阅Symfony Core开发人员之间关于同一问题的对话:https: //github.com/symfony/symfony/issues/2347

    对于大多数情况,由于多种原因,不建议注入服务容器.

    2023-01-10 10:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有