Symfony-events-eventlistener
symfony-イベントとEventListener
symfonyは、 EventDispatcher コンポーネントを通じてイベントベースのプログラミングを提供します。 エンタープライズアプリケーションでは、高度にカスタマイズ可能なアプリケーションを作成するために、イベントベースのプログラミングが必要です。 イベントは、オブジェクトが相互作用するための主要なツールの1つです。 イベントがないと、オブジェクトは効率的に相互作用しません。
イベントベースのプログラミングのプロセスは、次のように要約できます。 Event source というオブジェクトは、中央ディスパッチャオブジェクトに、user.registeredなどのイベントを登録するように要求します。 リスナーと呼ばれる1つ以上のオブジェクトは、user.registeredなどの特定のイベントをリッスンすることを中央ディスパッチャオブジェクトに要求します。 ある時点で、イベントソースオブジェクトは中央のディスパッチャオブジェクトにイベントをディスパッチするように要求します。たとえば、user.registeredは、必要な情報を備えたイベントオブジェクトとともに送信します。 中央ディスパッチャは、すべてのリスナーオブジェクトにイベントについて通知します。たとえば、user.registeredとそのEvent *オブジェクトです。
イベントベースのプログラミングでは、イベントソース、イベントリスナー、イベントディスパッチャー、およびイベント自体の4つのタイプのオブジェクトがあります。
概念を理解するための簡単なアプリケーションを作成しましょう。
ステップ1 *-プロジェクト、 *event-dispatcher-example を作成します。
ステップ2 *-クラス *.User を作成します。
ステップ3 *-イベント、 *UserRegisteredEvent を作成します。
ここで、 UserRegisteredEvent は User オブジェクトにアクセスできます。 イベントの名前は user.registered です。
ステップ4 *-リスナー *UserListener を作成します。
- ステップ5 *-イベントディスパッチャオブジェクトを作成します。
ステップ6 *-ディスパッチャーオブジェクトとそのメソッド *addListener を使用して、リスナーとイベントを接続します。
次のコードに示すように、匿名関数をイベントリスナーとして追加することもできます。
ステップ7 *-最後に、イベントディスパッチャーのメソッド *dispatch を使用して、イベントを起動/ディスパッチします。
完全なコードリストは次のとおりです。
main.php
結果
symfony Webフレームワークには多くのイベントがあり、それらのイベントのリスナーを登録し、それに応じてプログラムできます。 サンプルイベントの1つはkernel.exceptionであり、対応するイベントは GetResponseForExceptionEvent であり、応答オブジェクト(Web要求の出力)を保持します。 これは、ユーザーにランタイムエラーを表示する代わりに、例外をキャッチし、一般的なエラー情報で応答を変更するために使用されます。