Dan*_*cke 5 php events listener symfony
我已经阅读了一些关于Symfonys事件系统的指南/教程.但我仍然不确定命名最佳实践.不幸的是,大多数文档都使用登录等默认方案.所以这是游戏中的一个例子:
命令评估某种匹配结果.它会像这样触发一个适当的事件:
$dispatcher->dispatch('game_bundle.match_won', new MatchWonEvent($match, $winner));
Run Code Online (Sandbox Code Playgroud)
现在我想注册几个听众来处理这个事件,比如一个用于将其发布到获胜者的Facebook页面,另一个用于为获胜者预订成就.在示例中,我发现处理登录事件的监听器主要被称为类似的东西LoginListener,但是这个名称不应该与它的实际使用相关而不是与它相关的事件?因为现在在我的例子中我需要一个MatchWonListener,但是它应该包含Facebook和成就逻辑吗?那会使事件系统变得无用......那么FacebookListener拥有一个onMatchWon($event)和一个AchievementListener拥有它自己的onMatchWon($event)方法不是更好吗?这也可以很容易地将更多与Facebook相关的事件添加到FacebookListener例如.
我对样本中的命名感到困惑,现在还不确定.我完全错了吗?
关于如何命名事件没有“最佳实践”。但是,如果您在事件之后命名侦听器,我认为这完全违背了事件的目的。目标是能够让系统的不同部分相互交互,而无需考虑耦合和混合问题。
因此,考虑到您已经创建事件来分离关注点,为什么还要将所有不同的逻辑混合到一个侦听器中呢?在这种情况下,您不妨直接调用而不是调度事件。
我个人反对像“onMatchWon”这样的名称,因为它没有描述该方法的作用。假设您想要收听比赛获胜事件并更新获胜用户的成就。我可能会有一些用户管理服务或类似的方法updateAchievements(MatchWonEvent $event)。但我认为这更多的是品味问题,或者是惯例问题(如果你愿意的话)。
| 归档时间: |
|
| 查看次数: |
1128 次 |
| 最近记录: |