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');

下一节:fuelphp 电子邮件管理

fuelphp 教程

相关文章