当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Event - 类別

优质
小牛编辑
133浏览
2023-12-01

Event 类别能让你在无须修改任何核心档案之下与 Fuel 核心互动。

系统定义事件

FuelPHP 在 fuelphp 实例定义了几个事件,你可以挂接到核心而不须扩充它。 这些事件是:

事件描述
app_created在 FuelPHP 框架被初始化后,此事件将被触发。
request_created在一个新的 Request 物件被请求后,此事件将被触发。
request_started当一个 Request 被请求执行时,此事件将被触发。
controller_started在控制器 before() 方法被呼叫前,此事件将被触发。
controller_finished在控制器 after() 方法被呼叫并接收回传后,此事件将被触发。
response_created在一个新 Response 物件被锻造后,此事件将被触发。
request_finished当一个 Request 已完成并接收到一个回传时,此事件将被触发。
shutdown在主要请求已处理并且输出被送出后,此事件将被触发。
 
範例app/config/event.php
<?php

return array(
	'fuelphp' => array(
		'app_created' => function()
		{
// FuelPHP 初始化之后
		},
		'request_created' => function()
		{
// Request 锻造之后
		},
		'request_started' => function()
		{
// Request 被请求
		},
		'controller_started' => function()
		{
// 控制器 before() 方法呼叫之前
		},
		'controller_finished' => function()
		{
// 控制器 after() 方法呼叫之后
		},
		'response_created' => function()
		{
// Response 锻造之后
		},
		'request_finished' => function()
		{
// Request 完成且接收 Response
		},
		'shutdown' => function()
		{
// 输出已被送出
		},
	),
);

类别方法

register($event, $callback)

register 方法能让档案注册一个物件,将在 trigger 方法被呼叫时运行。

静态
参数
参数预设描述
$event必要你要对程式码注册的事件。
$callback必要回呼(callback)方法。
回传布林
範例
Event::register('user_login', 'Class::method');

unregister($event, $callback = null)

unregister 方法能让档案注销一个物件,将在 trigger 方法被呼叫时运行。

静态
参数
参数预设描述
$event必要你要对程式码注销的事件。
$callback选择性回呼(callback)方法。如果没有提供,所有的回呼(callback)将被移除。
回传布林
範例
// 定义两个事件回呼(callback)
$callback_one = function()
{
	echo 'callback one';
}

$callback_two = function()
{
	echo 'callback two';
}

// 注册事件到 "my_event"
Event::register('my_event', $callback_one);
Event::register('my_event', $callback_two);

// 注销第一个回呼(callback)
Event::unregister('my_event', $callback_one);

// 触发事件
Event::trigger('my_event');
// 这里只会写出 "callback two"

// 注销所有来自 "my_event" 的回呼(callback);
Event::unregister('my_event');

// 触发事件
Event::trigger('my_event');
// 将没有输出。

trigger($event, $data = '', $return_type = 'string', $reversed = false)

trigger 方法用于触发或启动透过 register 方法的回呼(callback)。

静态
参数
参数预设描述
$event必要你要触发的事件。
$data
''
任何你想要送到已注册方法的资料。
$return_type
'string'
你期望回传的资料类型。(string、array、json、none、serialized) - 预设是 string
$reversed
false
设定为 true 以反序触发事件,LIFO 而非 FIFO。
回传混合 - 依据 $return_type
範例
Event::trigger('user_login', $data)

has_events($event)

has_events 方法是可利用的,所以你可以检查特殊的已注册事件是否有触发器。

静态
参数
参数预设描述
$event必要你要检查的事件。
回传布林
範例
Event::has_events('user_login')

forge(array $events = array())

forge 回传一个新的 event 物件。

静态
参数
参数预设描述
$events
array()
你要检查的事件。
回传Event_Instance 物件
範例
// 建立一个新的 event 物件
$events = Event::forge();

// 建立一个新的 event 物件
// 加上事件
$events = Event::forge(array(
	'update' => function(){
		// 在更新时做点什幺
	},
	'register' => function(){
		// 在注册时做点什幺
	},
));

/**
 * !! 所有其他 Event 方法应用到实例
 */
$events->register('my_event', function(){
	echo 'this is awesome';
});

$events->trigger('my_event');
// 将输出 "this is awesome"

instance($name = 'fuelphp', array $events = array())

instance 回传一个新的唯一 event 物件。

静态
参数
参数预设描述
$name
'fuelphp'
实例名称。
$events
array()
你要检查的事件。
回传Event_Instance 物件
範例
// 建立一个新的 event 实例
$events = Event::instance('my_instance');

$same = Event::instance('my_instance');

$events->register('my_event', function(){
	echo 'awesome!';
});

$same->register('my_event', function(){
	echo 'this is ';
});

Event::instance('my_instance')->trigger('my_event');
// 将输出 "this is awesome!"