5

Symfony のイベント システムに関するガイドやチュートリアルをいくつか読みました。しかし、ネーミングのベストプラクティスについてはまだよくわかりません。残念ながら、ほとんどのドキュメントでは、ログインなどのデフォルトのシナリオが使用されています。ゲームの例を次に示します。

コマンドは、ある種の一致結果を評価します。次のような適切なイベントを発生させます。

$dispatcher->dispatch('game_bundle.match_won', new MatchWonEvent($match, $winner));

ここで、このイベントを処理するために複数のリスナーを登録したいと考えています。たとえば、これを勝者の Facebook ページに投稿するためのリスナーと、勝者の実績を予約するための別のリスナーです。例では、ログイン イベントを処理するリスナーが主に のようなLoginListener名前であることがわかりましたが、この名前は、関連するイベントではなく、実際の使用に関連していませんか? 私の例では が必要ですがMatchWonListener、Facebook と達成ロジックの両方を含める必要がありますか? そうなるとイベントシステムが使い物にならなくなります… 独自のメソッドを持つものと、独自のメソッドを持つものを用意した方がよいのではないでしょFacebookListenerうか。これにより、Facebook 関連のイベントを例に簡単に追加することもできます。onMatchWon($event)AchievementListeneronMatchWon($event)FacebookListener

サンプルの命名について混乱しており、今はよくわかりません。私はそれを完全に間違っていますか?

4

1 に答える 1

3

イベントに名前を付ける方法に関する「ベスト プラクティス」はありません。ただし、イベントにちなんでリスナーに名前を付けると、イベントの目的が完全に無効になると思います。目標は、システムのさまざまな部分が結合したり混合したりすることなく相互にやり取りできるようにすることです。

ここまでイベントを作成して懸念事項を分離したことを考えると、なぜさまざまなロジックをすべて 1 つのリスナーに混在させるのでしょうか? その場合、イベントをディスパッチする代わりに、直接呼び出しを行うこともできます。

私は個人的に「onMatchWon」のような名前には反対です。なぜなら、それはメソッドが何をするかを説明していないからです。試合に勝ったイベントを聞いて、勝ったユーザーの実績を更新したいとしましょう。おそらく、ユーザーマネージャーサービスまたはメソッドを使用した並べ替えが必要updateAchievements(MatchWonEvent $event)です。しかし、それは好みの問題、またはあなたが望むなら慣習の問題だと思います.

于 2012-11-05T20:46:37.333 に答える