📜  FuelPHP-事件

📅  最后修改于: 2020-10-25 04:29:10             🧑  作者: Mango


事件是程序识别的动作或事件,可以由程序本身处理。例如,我们可以定义一个名为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中处理事件,如下所示:

 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 
         }, 
      ), 
   );

事件方法

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

寄存器()

register方法允许文件注册将在调用触发方法时运行的对象。

$my_event_code = function() { 
   echo 'my event'; 
} 
Event::register('my_event', $my_event_code); 

取消注册()

取消注册方法允许文件取消注册将在调用触发器方法时运行的对象。

Event::unregister('my_event', $my_event_code);

触发()

触发方法用于触发或激活通过register方法关联的回调。

Event::trigger('my_event');

has_events()

has_events方法可用,因此您可以检查特定的已注册事件是否具有触发器。

Event::has_events('my_event');

锻造()

伪造返回一个新的事件对象。

$event = Event::forge();

instance()

实例返回一个新的事件对象单例。

$event = Event::instance('event_instance');