FuelPHP - 事件



一個事件是由程式識別的一個動作或事件,程式本身可以處理該事件。例如,我們可以定義一個名為my_fuel_event的動作或事件,然後在每次呼叫my_fuel_event事件時執行一些操作。FuelPHP 提供了Event類來處理應用程式中的事件。

系統事件

FuelPHP 定義了一些事件,我們可以透過這些事件在應用程式呼叫或觸發定義的事件時執行一些操作。這有助於更改 FuelPHP 的行為,而無需更改 FuelPHP 的核心程式碼檔案。預定義的事件如下:

  • app_created - 在 FuelPHP 框架初始化後將觸發此事件。

  • request_created - 建立新的 Request 物件後將觸發此事件。

  • request_started - 請求執行時將觸發此事件。

  • controller_started - 在呼叫控制器 before() 方法之前將觸發此事件。

  • controller_finished - 在呼叫控制器 after() 方法並收到響應後將觸發此事件。

  • response_created - 建立新的 Response 物件後將觸發此事件。

  • request_finished - 請求執行完成並收到響應後將觸發此事件。

  • shutdown - 主請求處理完畢併發送輸出後將觸發此事件。

我們可以在特殊的配置檔案fuel/app/config/events.php中處理事件,如下所示:

<?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()

unregister 方法允許檔案登出一個物件,該物件在呼叫 trigger 方法時將執行。

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()

instance 返回一個新的事件物件單例。

$event = Event::instance('event_instance');
廣告
© . All rights reserved.