symfony - 如何在 Symfony 中将服务注入工厂创建的对象
问题描述
我有EmailNotifier
在工厂类中创建的自定义类NotifierFactory
。我需要在 EmailNotifier 中使用 Mailer 服务。但是如何在里面注入服务呢?它不能被注入到构造函数中,因为我是这样创建类的:
$emailNotifier = new EmailNotifier();
我试图将它注入 services.yaml
App\Service\Notifier\Notifiers\EmailNotifier:
calls:
- [setMailer, ['@mailer']]
但是永远不会调用 setMailer() 方法。
解决方案
如果我选择另一种方法,我可以向我的“通知程序”注入服务
# Defining each notifier as a service, then pass another service inside (mailer here)
notifiers.email:
public: true
class: App\Service\Notifier\Notifiers\EmailNotifier
calls:
- [setMailer, ['@mailer']]
# Pass each notifier service inside the Notifier object, which replaces the factory class
App\Service\Notifier\Notifier:
calls:
- [setNotifierServices, ['@notifiers.email']]
推荐阅读
- android - 在由 SQL 数据库提供的 RecyclerView 中保留 CheckBox 状态
- javascript - 如何测试字符串中的匹配转义字符?
- python - 用 Fernet 解密 [Python]
- java - 从经典的 java.util.Date 类型的属性“迁移”到等效的 java.time 类型
- python - Python:- 使用 Copy 获取类中静态变量的值
- c# - 将单个 Excel 工作表数据合并到具有多个工作表的单个 Excel
- python - 如何始终并行运行 n 个进程,而无需等待前 n 个进程完成?
- mysql - MySQL搜索并删除字段中的一些文本
- python-3.x - 如何验证 .txt 文件中的用户输入(用户名和密码)?Python
- android - 带有BottomSheet的windowSoftInputMode不起作用