Zend-framework-event-manager
Zend Framework-イベントマネージャー
最新のアプリケーションにはすべて、堅実で柔軟なイベントコンポーネントが必要です。 Zend Frameworkは、 zend-eventmanager というコンポーネントを提供します。 zend-eventmanagerは、高レベルアーキテクチャの設計を支援し、サブジェクト/オブザーバーパターンとアスペクト指向プログラミングをサポートします。
イベントマネージャーをインストールする
イベントマネージャは、以下で指定されている Composer を使用してインストールできます-
イベントマネージャーの概念
イベントマネージャのコアコンセプトは次のとおりです-
- Event -イベントは、 greet など、任意のアクションと呼ばれます。
- リスナー-PHPコールバック。 イベントに添付され、イベントがトリガーされると呼び出されます。 リスナーのデフォルトの署名は-
- EventInterface Class -イベント自体を指定するために使用されます。 名前(set/getName)、ターゲット(get/setTarget)、パラメーター(get/setParams)などのイベント情報を設定および取得するメソッドがあります。
- * EventManagerクラス*-EventManagerのインスタンスは、アプリケーションおよびその対応するリスナーで定義されたすべてのイベントを追跡します。 EventManagerは、リスナーにイベントをアタッチする attach メソッドを提供し、事前定義されたイベントをトリガーする trigger メソッドを提供します。 トリガーが呼び出されると、EventManagerはそれに接続されたリスナーを呼び出します。
- EventManagerAwareInterface -イベントベースのプログラミングをサポートするクラスの場合、EventManagerAwareInterfaceを実装する必要があります。 イベントマネージャを取得および設定するための setEventManager および getEventManager の2つのメソッドを提供します。
例
イベントマネージャーの概念を理解するために、簡単なPHPコンソールアプリケーションを作成しましょう。 以下の手順に従ってください。
- フォルダー「eventapp」を作成します。
- コンポーザーを使用して zend-eventmanager をインストールします。
- 「eventapp」フォルダー内にPHPファイル Greeter.php を作成します。
- クラス Greeter を作成し、 EventManagerAwareInterface を実装します。
ここでは、 require を使用して、Composerがインストールしたすべてのコンポーネントを自動ロードします。
以下に示すように、クラス Greeter で setEventManager メソッドを記述します-
このメソッドは、現在のクラスを特定のイベントマネージャー($ events引数)に設定し、ローカル変数 $ events にイベントマネージャーを設定します。
次のステップは、以下に示すように Greeter クラスに getEventManager メソッドを記述することです-
このメソッドは、ローカル変数からイベントマネージャーを取得します。 使用できない場合は、イベントマネージャーのインスタンスを作成して返します。
クラス Greeter にメソッド greet を記述します。
このメソッドは、イベントマネージャーを取得し、それに関連付けられたイベントを起動またはトリガーします。
次のステップは、 Greeter クラスのインスタンスを作成し、そのメソッド greet にリスナーをアタッチすることです。
リスナーコールバックは、イベント、ターゲット、および指定されたパラメーターの名前を出力するだけです。
今、コマンドプロンプトphp Greeter.php でアプリケーションを実行すると、結果は次のようになります-
上記のサンプルアプリケーションでは、イベントマネージャの基本のみを説明しています。 イベントマネージャーは、*リスナーの優先度、カスタムコールバックプロトタイプ/署名、短絡など*など、より高度なオプションを提供します。 イベントマネージャーは、Zend MVCフレームワークで広く使用されています。