1. ホーム
  2. symfony

[解決済み] Doctrine リスナー vs サブスクライバー

2023-06-24 10:36:14

質問

Symfony2 フレームワークで作業しているのですが、Doctrine のサブスクライバーとリスナーの使い分けはどのような場合に行うのでしょうか? Doctrine の ドキュメント のリスナーに関するドキュメントはとてもわかりやすいのですが、サブスクライバーについてはあまりよくわかりません。 symfony の クックブックのエントリ は似ています。

どのように解決するのですか?

私の見解では、大きな違いは1つだけです。

  • Listener は、リスニングするイベントを指定してサインアップします。
  • Subscriber は、リスニングしているイベントをディスパッチャに伝えるメソッドを持っています。

これは大きな違いに見えないかもしれませんが、よく考えてみると、どちらかを使いたいケースもあるはずです。

  • 登録時に設定されるため、1つのリスナーを異なるイベントを持つ多くのディスパッチャに割り当てることができます。すべてのメソッドがリスナー内に配置されていることを確認するだけです。
  • の戻り値を変更することで、サブスクライバーが登録されるイベントを実行時やサブスクライバー登録後にも変更することができます。 getSubscribedEvents (非常に騒がしいイベントを聞いていて、一度だけ何かを実行したい時を考えてみてください)

他にも私が気づいていない違いがあるかもしれませんが!