DDD:我应该将Symfony EventDispatcher用于我的域事件吗?

San*_*hal 6 php events domain-driven-design symfony

我想知道是否应该使用Symfony EventDispatcher Component来处理我的DDD应用程序中的域事件.

对我来说,当经过良好测试的组件可用时,从头开始重新安排事件调度程序是没有意义的.但另一方面,Symfony组件使所有事件都从基类Event类扩展.这不会将我的域事件绑定到EventDispatcher组件吗?

另外,如果我这样做使用这个组件,我应该提高对应用程序范围event_dispatcher业务域的活动或者我应该保持的Symfony的应用程序事件和我的域名事件相互独立(即创建一个新的EventDispatcher)?

Cer*_*rad 4

我想知道为什么没有EventInterface。

这:https: //github.com/symfony/symfony/issues/9539表示因为 Event 是一个值对象,所以不需要接口。我承认我不太同意这个论点(至少在耦合方面),但还没有进一步研究。可能是一个很好的 DDD 问题。

就我而言,我创建了一个 DomainEventInterface,它在 DomainEvent 中实现,而 DomainEvent 又扩展了 Event。我使用 DomainEvent 作为我的基本事件类。如果我什至需要切换调度程序,这应该会使重构变得相当容易。而且,至少在我看来,避免将域直接耦合到事件组件。

我创建自己的 DomainDispatcher 实例主要是为了避免将我的域绑定到实际的 Symfony 框架。

另请注意,事件侦听器接口在 S2.4 中已更改。Event 对象将在 3.0 中得到简化。