我正在编写一个 Symfony 4 应用程序。它的核心是一个包含一些嵌套子流程的流程。一般来说,这个想法,如何处理它看起来像这样:
有一些process
es(主要流程及其子流程的层次结构)。每个进程都有一组state
s。每个进程都有一组 allowed event
s。
这种机制的门面是SystemEventHander
. 它注册处理的进程,分析传入的请求,并为当前事件找到并执行适当的处理程序。
services.yaml
# events
App\Process\SystemEventHandlerInterface:
class: 'App\Process\SystemEventHandler'
tags:
- { name: kernel.event_listener, event: general:user_message_received, method: handle }
- { name: kernel.event_listener, event: process_a:foo, method: handle }
- { name: kernel.event_listener, event: process_a.process_b:foo, method: handle }
- { name: kernel.event_listener, event: process_a.process_c:bar, method: handle }
- { name: kernel.event_listener, event: process_a.process_d:baz, method: handle }
- { name: kernel.event_listener, event: process_a.process_d.process_e:buz, method: handle }
所以我的所有自定义事件最初只由一个处理程序处理:SystemEventHandler()
.
问题是,对于每一个事件,我必须编写几乎相同的行:
- { name: kernel.event_listener, event: process_name:event_name, method: handle }
只有process_name:event_name
变化,其余的都是静态的。
Image 我有很多活动——30 个?50?100?我怎样才能避免为每一行显式地写一个新行?