FuelPHP 事件
fuelphp 事件
事件 是程序識別的動作或事件,可由程序本身處理。例如,我們可以定義一個名為 my_fuel_event 的動作或事件,然后在調用 my_fuel_event 事件時做一些工作。 fuelphp 提供了 event 類來處理應用程序中的事件。
系統事件
fuelphp 定義了一些事件,只要應用程序調用或觸發定義的事件,我們就可以通過這些事件進行一些工作。這個幫助改變了 fuelphp 的行為,而不改變 fuelphp 的核心代碼文件。預定義的事件如下:
- app_created-該事件將在 fuelphp 框架初始化后觸發。
- request_created-在偽造新的請求對象后將觸發此事件。
- request_started-請求執行請求時將觸發此事件。
- controller_started-此事件將在調用控制器 before() 方法之前觸發。
- controller_finished-此事件將在控制器 after() 方法被調用并收到響應后觸發。
- response_created-此事件將在偽造新的響應對象后觸發。
- request_finished-當請求的執行完成并收到響應時將觸發此事件。
- shutdown-在處理主請求并發送輸出后將觸發此事件。
我們可以處理特殊配置文件中的事件, fuel/app/config/events.php 如下:
return array ( 'fuelphp' =--> array ( 'app_created' => function() { // after fuelphp initialised }, 'request_created' => function() { // after request forged }, 'request_started' => function() { // request is requested }, 'controller_started' => function() { // before controllers before() method called }, 'controller_finished' => function() { // after controllers after() method called }, 'response_created' => function() { // after response forged }, 'request_finished' => function() { // request is complete and response received }, 'shutdown' => function() { // output has been send out }, ), );
事件方法
event 類提供注冊、注銷和觸發事件的方法。它們如下,
register()
register 方法允許文件注冊一個對象,該對象將在調用 trigger 方法時運行。
$my_event_code = function() { echo 'my event'; } event::register('my_event', $my_event_code);
unregister()
取消注冊方法允許文件取消注冊將在調用觸發器方法時運行的對象。
event::unregister('my_event', $my_event_code);
trigger()
trigger 方法用于觸發或激活通過 register 方法關聯的回調。
event::trigger('my_event');
has_events()
has_events 方法可用,因此您可以檢查特定注冊事件是否具有觸發器。
event::has_events('my_event');
forge()
forge 返回一個新的事件對象。
$event = event::forge();
instance()
該實例返回一個新的事件對象單例。
$event = event::instance('event_instance');