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!"
|