Event 类別

Event 类別能让你在無須修改任何核心档案之下與 Fuel 核心互动。

系统定義事件

FuelPHP 在 fuelphp 實例定義了幾个事件,你可以掛接到核心而不須擴充它。 这些事件是:

事件 描述
app_created 在 FuelPHP 框架被初始化後,此事件将被觸发。
request_created 在一个新的 Request 物件被請求後,此事件将被觸发。
request_started 當一个 Request 被請求执行時,此事件将被觸发。
controller_started 在控制器 before() 方法被呼叫前,此事件将被觸发。
controller_finished 在控制器 after() 方法被呼叫并接收回傳後,此事件将被觸发。
response_created 在一个新 Response 物件被鍛造後,此事件将被觸发。
request_finished 當一个 Request 已完成并接收到一个回傳時,此事件将被觸发。
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 完成且接收 Response
		},
		'shutdown' => function()
		{
			// 輸出已被送出
		},
	),
);

类別方法

register($event, $callback)

register 方法能让档案註冊一个物件,将在 trigger 方法被呼叫時运行。

靜態
參数
參数 預設 描述
$event 必要 你要對程式码註冊的事件。
$callback 必要 回呼(callback)方法。
回傳 布林
範例
Event::register('user_login', 'Class::method');

unregister($event, $callback = null)

unregister 方法能让档案註銷一个物件,将在 trigger 方法被呼叫時运行。

靜態
參数
參数 預設 描述
$event 必要 你要對程式码註銷的事件。
$callback 選擇性 回呼(callback)方法。如果沒有提供,所有的回呼(callback)将被移除。
回傳 布林
範例
// 定義兩个事件回呼(callback)
$callback_one = function()
{
	echo 'callback one';
}

$callback_two = function()
{
	echo 'callback two';
}

// 註冊事件到 "my_event"
Event::register('my_event', $callback_one);
Event::register('my_event', $callback_two);

// 註銷第一个回呼(callback)
Event::unregister('my_event', $callback_one);

// 觸发事件
Event::trigger('my_event');
// 这裡只会寫出 "callback two"

// 註銷所有來自 "my_event" 的回呼(callback);
Event::unregister('my_event');

// 觸发事件
Event::trigger('my_event');
// 将沒有輸出。

trigger($event, $data = '', $return_type = 'string', $reversed = false)

trigger 方法用於觸发或啟动透過 register 方法的回呼(callback)。

靜態
參数
參数 預設 描述
$event 必要 你要觸发的事件。
$data
''
任何你想要送到已註冊方法的資料。
$return_type
'string'
你期望回傳的資料类型。(string、array、json、none、serialized) - 預設是 string
$reversed
false
設定为 true 以反序觸发事件,LIFO 而非 FIFO。
回傳 混合 - 依據 $return_type
範例
Event::trigger('user_login', $data)

has_events($event)

has_events 方法是可利用的,所以你可以檢查特殊的已註冊事件是否有觸发器。

靜態
參数
參数 預設 描述
$event 必要 你要檢查的事件。
回傳 布林
範例
Event::has_events('user_login')

forge(array $events = array())

forge 回傳一个新的 event 物件。

靜態
參数
參数 預設 描述
$events
array()
你要檢查的事件。
回傳 Event_Instance 物件
範例
// 建立一个新的 event 物件
$events = Event::forge();

// 建立一个新的 event 物件
// 加上事件
$events = Event::forge(array(
	'update' => function(){
		// 在更新時做點什么
	},
	'register' => function(){
		// 在註冊時做點什么
	},
));

/**
 * !! 所有其他 Event 方法應用到實例
 */
$events->register('my_event', function(){
	echo 'this is awesome';
});

$events->trigger('my_event');
// 将輸出 "this is awesome"

instance($name = 'fuelphp', array $events = array())

instance 回傳一个新的唯一 event 物件。

靜態
參数
參数 預設 描述
$name
'fuelphp'
實例名稱。
$events
array()
你要檢查的事件。
回傳 Event_Instance 物件
範例
// 建立一个新的 event 實例
$events = Event::instance('my_instance');

$same = Event::instance('my_instance');

$events->register('my_event', function(){
	echo 'awesome!';
});

$same->register('my_event', function(){
	echo 'this is ';
});

Event::instance('my_instance')->trigger('my_event');
// 将輸出 "this is awesome!"