Event クラス

イベントクラスを使うことで Fuel のコアの処理に、コアのファイルを変更することなく介入することができます。

システムに定義されたイベント

FuelPHP は fuelphp インスタンス上にいくつかイベントを定義します。これにより、コアを拡張することなく、 内部の処理へフックきます。それらイベントは次の通り:

Event 説明
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(){
	'すごい!';
});

$same->register('my_event', function(){
	echo 'これは ';
});

Event::instance('my_instance')->trigger('my_event');
// "これは すごい!" が出力されるはず