0

私はフォト ギャラリーの非常にシンプルなサイトに取り組んでいます。ユーザーは、ギャラリーでお気に入りの写真に投票することができます。ユーザーが投票するたびにいくつかのイベントをセットアップし、投票オブジェクトを受け取る VoteCase イベントが呼び出されます。

VOTEオブジェクトは以下で構成されています ...

  • 写真付き身分証明書
  • 有権者ID

イベントは投票オブジェクトを受け取り、写真の所有者と、写真が選ばれたことを知らせる電子メールを送信します。メールを送信するための別の AppMailer.php クラスがあります。

私の質問は、明らかに、写真が誰のものであるかを確認するためにルックアップを行う必要があるということです (私はすでにそのための雄弁な関係を持っています ( $photo->user;)

しかし、それはイベントの仕事ですか?データベース呼び出しを実行し、ユーザー オブジェクトを取得して AppMailer に渡すには? それとも、AppMailer クラスがイベント全体を受け取り、ユーザー自身をルックアップする必要がありますか?

他にも投票に関連するイベントがいくつかあります。投票数の増加、投票ユーザーのクレジットの付与、場合によっては「バッジ」の割り当てなど。これらのそれぞれに、追加の DB ルックアップがある場合があります。したがって、これを配置するのに最適な場所を知っていると役立ちます。

イベントは DTO に非常に似ていると言われましたが、それらの経験はありません。

4

1 に答える 1

0

注: これは私の意見であり、規則ではありません (ベスト プラクティスではない可能性があります)。

はい、イベントリスナーで DB 呼び出しを行っても問題ありません (メーラーを呼び出している場所を想定しています)。

  1. このようにして、アプリのメーラー クラスは ORM/DB に密結合されず、単一の責任を持ちます。

  2. イベントリスナーに ShouldQueue を実装して、パフォーマンスの問題を取り除きます。( あなたが正しいです? )

于 2016-04-02T22:27:47.813 に答える