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() {
        // FuelPHP 初始化后
        },
        'request_created' => function() {
        // 请求伪造后
        },
        'request_started' => function() {
        // 请求已请求
        },
        'controller_started' => function() {
        // 控制器 before() 方法调用前
        },
        'controller_finished' => function() {
        // 控制器 after() 方法调用后
        },
        'response_created' => function() {
        // 响应伪造后
        },
        'request_finished' => function() {
        // 请求已完成,且收到响应
        },
        'shutdown' => function() {
        // 输出已发送
        },
      ), 
   );

事件方法

事件类提供注册、取消注册和触发事件的方法。它们如下,

register()

注册方法允许文件注册一个对象,该对象将在调用触发器方法时运行。

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