首页 > 解决方案 > Symfony 4,获取 Logger,获取 Doctrine,从控制器中获取 Rabbit

问题描述

在控制器上的 Symfony 3.3 中,我可以这样做:

$sendEmailManager = new SendEmailManager($this->container);

在管理器中:

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

我可以在所有方法中使用它:

$logger = $ this->container->get('logger');
$em = $this->container->get('doctrine')->getManager();
$container->get('old_sound_rabbit_mq.producer_email_text_producer')->publish(json_encode($ dataToRabbit));

我如何在 Symfony 4.4 中做到这一点?

标签: loggingdoctrinerabbitmqsymfony4

解决方案


您可以按如下方式注入所需的依赖项:

class SendEmailManager {
    private $em;
    private $logger;

    public function __construct(EntityManagerInterface $em, LoggerInterface $logger, [...]) { // As many as you want..
        $this->em = $em;
        $this->logger = $logger;
    }
}

然后,在您的控制器中,您可以注入该类。

在您的 services.yml 中,您应该将自动装配设置为 true,因为这样,symfony 会将所有类注册为服务。

希望能帮助到你


推荐阅读