logging - 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 中做到这一点?
解决方案
您可以按如下方式注入所需的依赖项:
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 会将所有类注册为服务。
希望能帮助到你
推荐阅读
- node.js - Vault 集成 SSL 证书问题 NodeJS
- kubernetes - 如何使用 Helm 在 Nginx Ingress 中设置服务器片段配置
- c# - Amazon S3 更改现有文件的 S3Canned ACL (C#)
- git - 通过 ssh 服务器和 github 使用 ssh 密钥
- delphi - 如何在运行时使用键盘在 Delphi 中移动控件?
- utf-8 - 如何在 monetdb 中插入问题正文中描述的字符而不将其转换为 Â+itself ?(MonetDB 服务器工具包 v11.39.5)
- excel - Excel COM 加载项内部工作表 (Add-in Express)
- java - Java 接口不考虑超类的方法实现
- python - swig:如何将上下文管理器方法添加到不透明句柄?
- apache-flink - Flink 任务管理器不断重启