更多内容: http://blog.yuhai.win
参考地址:
http://www.digpage.com/event.html
1、 yii\base\Event 封装了与时间相关的有关数据并提供了一些功能函数作为辅助
class Event extends Object
{
public $name; // 事件名
public $sender; // 事件发布者,通常是调用了 trigger() 的对象或类。
public $handled = false; // 是否终止事件的后续处理
public $data; // 事件相关数据
private static $_events = [];
public static function on($class, $name, $handler, $data = null,
$append = true)
{
// ... ...
// 用于绑定事件handler
}
public static function off($class, $name, $handler = null)
{
// ... ...
// 用于取消事件handler绑定
}
public static function hasHandlers($class, $name)
{
// ... ...
// 用于判断是否有相应的handler与事件对应
}
public static function trigger($class, $name, $event = null)
{
// ... ...
// 用于触发事件
}
}
2、时间handler
所谓时间handler就是时间处理程序,负责时间触发后怎么办的问题,从本质上来说,一个事件handler就是一段PHP代码,即一个PHP函数。
3、事件的绑定和解除
a、yii\base\Component:: on() 就是用来绑定的
b、yii\base\Component:: off() 就是用来解除的
$person = new Person;
// 使用PHP全局函数作为handler来进行绑定
$person->on(Person::EVENT_GREET, 'person_say_hello');
// 使用对象$obj的成员函数say_hello来进行绑定
$person->on(Person::EVENT_GREET, [$obj, 'say_hello']);
// 使用类Greet的静态成员函数say_hello进行绑定
$person->on(Person::EVENT_GREET, ['app\helper\Greet', 'say_hello']);
// 使用匿名函数
$person->on(Person::EVENT_GREET, function ($event) {
echo 'Hello';
});