Nullyのぶろぐ

仙台で働くエンジニアの日記

ZF2で予め登録されているイベント一覧

一覧とは書きましたが、自身はありません!!

ZF2から利用できるようになる(予定だけどほぼ実装されてるっぽい)イベントマネージャー。

簡単に説明してしまうと、JavaScriptにもあるように「ユーザーが××を△△したら○○を行う」という、一連の流れを簡単に登録・削除・処理ができるようになる機能です。

(間違っていたらごめんなさい><;)

このイベントマネージャーで利用できるイベントID(トリガーID)を個人的に見つけた分を覚書としてメモ!

bootstrap

Zend\Mvc\Application::bootstrap()の処理の最後に呼び出される。

モジュール毎の初期化(ZF1で言うところのapplication.iniにresources.modules[] = を記述したような状態に近いのかな?)を行うためのトリガーID。

route

Zend\Mvc\Applicatoin::run()の処理中に呼び出されるトリガーID。

URLの決定(404や500エラーの場合も)が行われる際に呼び出される。

dispatch

Zend\Mvc\Applicatoin::run()の処理中に呼び出されるトリガーID。

URL決定後、アクションが実行される際に呼び出される。

finish

Zend\Mvc\Applicatoin::run()の処理中に呼び出されるトリガーID。

アクションの実行後、routeイベント発行時に処理のストップフラグが成立した場合、リクエスト完了時に呼び出される。

render

Zend\Mvc\Applicatoin::run()の処理中に呼び出されるトリガーID。

リクエストに対する処理が完了し、レスポンスを吐き出す直前に呼び出される。

ビューの調整などを行うときに便利なトリガー(だと思う...。)。

イベントの種類について

ファイル単位で見たくらいの程度なので、実際にどこまで出来るかはわかりませんが、以下の3つほどがEventManagerのパッケージとして扱われていました。

EventManager

全体のイベントを総括して管理するイベントコレクションクラス。

このクラスが、度のイベントにどういう内容のイベントが登録されているのかという詳細な情報が入り、このクラスのtrigger()関数でイベントが発行されます。

GlobalEventManager

アプリケーション全体で利用するようなイベントを管理するためのイベント管理クラス。

static関数の集まりなので名前の通り、どこからでもイベントの発行・登録・解除が行える。

SharedEventManagerとは全く別のイベントコレクションを利用するので、競合することは無いハズ。

[gist id=3038328]

SharedEventManager

モジュール間で共有する際に利用できるイベント管理クラス。

Module.phpのinit関数などからMvcEventから引き出して自前のコールバックなどを登録することができます。

FilterChain

これが何者かは不明...。

名前から察するに、なんかのフィルタをObserverパターンで実装されている何かとしか...?

というか使い方が全くわからない/(^o^)\

イベントのマネジャーの使い方

基本的には、以下のコードのようにSharedEventManagerに登録したイベントを実行する例です。

[gist id=3038292]

ZF2からはイベント処理が追加され、アクション処理などがイベント登録→イベント実行→レスポンスを受け取るといったかんじの流れになるので、間隔をつかむまでが少々...。

ですが、ここさえマスターすればZF2はマスターできるんじゃないかなぁと適当なことを言ってみます!!\(^o^)/

イベントのトリガーポイントだけ書こうとしたのにイベントクラスについて書いてしまいましたがご愛嬌ということで...!☆(ゝω・)vキャピ