Event クラス
イベントクラスを使うことで Fuel のコアの処理に、コアのファイルを変更することなく介入することができます。
システムに定義されたイベント
FuelPHP は fuelphp インスタンス上にいくつかイベントを定義します。これにより、コアを拡張することなく、
内部の処理へフックきます。それらイベントは次の通り:
app_created |
このイベントは FuelPHP フレームワークが初期化された後にトリガーされます。
|
request_created |
このイベントは新しい Request オブジェクトが作られた後にトリガーされます。
|
request_started |
このイベントは Request の実行がリクエストされる際にトリガーされます。
|
controller_started |
このイベントはコントローラーの before() メソッドが呼び出される前にトリガーされます。
|
controller_finished |
このイベントはコントローラーの after() メソッドが呼び出され、レスポンスを受け取った後にトリガーされます。
|
response_created |
このイベントは新しい Response オブジェクトが作られた後にトリガーされます。
|
request_finished |
このイベントは新しい Response の実行が完了し、レスポンスを受け取った際にトリガーされます。
|
shutdown |
このイベントはメインのリクエストが処理され、出力内容が送信され切った後にトリガーされます。
|
|
例 |
app/config/event.php の中で
<?php
return array(
'fuelphp' => array(
'app_created' => function()
{
// FuelPHP 初期化された後の処理
},
'request_created' => function()
{
// Request が作られた後の処理
},
'request_started' => function()
{
// Request がリクエストされる際の処理
},
'controller_started' => function()
{
// コントローラーの before() メソッドが呼び出される前の処理
},
'controller_finished' => function()
{
// コントローラーの after() メソッドが呼び出された後の処理
},
'response_created' => function()
{
// Response が作られた後の処理
},
'request_finished' => function()
{
// Request が完了し、レスポンスを受け取った後の処理
},
'shutdown' => function()
{
// 出力内容が送信され切った後の処理
},
),
);
|
クラスメソッド
register($event, $callback)
register メソッドにより triggerメソッドが呼び出された際に実行されるオブジェクトを、ファイルに登録させることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$event |
必須 |
あなたが自身のコードに登録しているイベント |
$callback |
必須 |
コールバックメソッド |
|
返り値 |
boolean |
例 |
Event::register('user_login', 'Class::method');
|
unregister($event, $callback = null)
The unregister メソッドにより trigger メソッドが呼び出された際に実行されるオブジェクトを、ファイルに登録解除させることができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$event |
必須 |
あなたが自身のコードに登録しているイベント |
$callback |
optional |
コールバックメソッド。 指定が無い場合は全てのコールバックが削除されます |
|
返り値 |
boolean |
例 |
// 2 つのイベント用コールバックを定義
$callback_one = function()
{
echo 'コールバック 1';
};
$callback_two = function()
{
echo 'コールバック 2';
};
// "my_event" という名前でイベントを登録
Event::register('my_event', $callback_one);
Event::register('my_event', $callback_two);
// callback_one を登録解除
Event::unregister('my_event', $callback_one);
// イベントをトリガー
Event::trigger('my_event');
// "callback two" のみが出力されるはず。
// "my_event" から全てのコールバックを登録解除
Event::unregister('my_event');
// イベントをトリガー
Event::trigger('my_event');
// 何も出力されないはず。
|
trigger($event, $data = '', $return_type = 'string', $reversed = false)
trigger メソッドはトリガーのため、または、register メソッドを通じて関連付けられたコールバックを有効化するために使われます
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$event |
必須 |
あなたがトリガーするイベント |
$data |
''
|
トリガーされたメソッドに送りたいあらゆるデータ |
$return_type |
'string'
|
戻り値として期待しているデータの種類 (string, array, json, none, serialized) - デフォルトは文字列 |
$reversed |
false
|
true にセットするとイベントを逆順で発火させます (FIFO ではなく LIFO になる) 。 |
|
返り値 |
mixed - $return_type の値に依存する。 |
例 |
Event::trigger('user_login', $data)
|
has_events($event)
has_events メソッドを使い、特定の登録済みイベントがトリガーを持っているかチェックできます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$event |
必須 |
あなたがチェックしているイベント |
|
返り値 |
boolean |
例 |
Event::has_events('user_login')
|
forge(array $events = array())
forge は新しいイベントオブジェクトを返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$events |
array()
|
あなたがチェックしているイベント |
|
返り値 |
Event_Instance object |
例 |
// 新しいイベントオブジェクトを作成
$events = Event::forge();
// イベントと一緒に
// 新しいイベントオブジェクトを作成
$events = Event::forge(array(
'update' => function(){
// 更新処理の際に何かする
},
'register' => function(){
// 登録処理の際に何かする
},
));
/**
* !! その他すべての Event メソッドは、インスタンスにも適用される
*/
$events->register('my_event', function(){
echo 'これはすごい';
});
$events->trigger('my_event');
// "これはすごい" が出力される
|
instance($name = 'fuelphp', array $events = array())
instance は新しいイベントのシングルトンオブジェクトを返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$name |
'fuelphp'
|
インスタンスの名前 |
$events |
array()
|
あなたがチェックしているイベント |
|
返り値 |
Event_Instance object |
例 |
// 新しいイベントインスタンスを生成
$events = Event::instance('my_instance');
$same = Event::instance('my_instance');
$events->register('my_event', function(){
echo 'すごい!';
});
$same->register('my_event', function(){
echo 'これは ';
});
Event::instance('my_instance')->trigger('my_event');
// "これは すごい!" が出力されるはず
|