在我的项目中,我有多个实体需要像生活周期一样的函数。我说'lifecyclecallback like'因为我想更新一些其他的entites并且我觉得使用Entity Listener或Subscriber更新父或子实体是不好的做法。所以我认为事件可能是最好用的。
例如,我有一个Post
实体与Topic
通过多对一相关。在创建新的Post
时,我想为此发送一个事件,在更新时,我想为该事件创建一个事件......起初我以为我可以创建一个包含所有这些事件的PostEvent类但是docs建议为每个事件创建一个单独的类。所以在我的情况下,我会有像
这对我来说似乎很乏味,我最终得到了一堆具有类似目的的文件和类。我注意到FosUserBundle提供了一些类似的功能,但我不明白发生了什么。 我做错了吗?有更好的方法来发送这些事件吗?
答案 0 :(得分:1)
不同的事件具有不同的价值。
例如,我可以想象PostCreatedEvent
保留帖子创建时的初始值,PostEditedEvent
将保留差异,而PostDeletedEvent
仅保留已删除帖子的ID。< / p>
如果它们具有相似的值(请三思而后行!),您可以将它们组合成一个事件类。请注意,这一切都取决于您,EventDispatcher组件根本不关心。
作为一个小技巧,如果你想做一些动作而不仅仅是通知外部世界发生了什么事情,请考虑使用命令和命令总线。例如,请参阅SimpleBus的作者{/ 3}}。
答案 1 :(得分:0)
如果您希望将解决方案创建为bundle以供以后使用,那么不同的事件(PostCreateEvent,PostEditEvent等)是很好的。如果它只是特定应用程序的一部分,我认为只需制作一些处理器来制作业务逻辑。您可以从控制器调用此处理程序。