Yii2 源码学习 Event

Yii2框架通过Event类实现了事件驱动模式,允许在不修改核心代码的情况下扩展功能。事件绑定、解绑和触发是其核心功能。事件绑定通过`on()`方法,解绑使用`off()`,触发事件则调用`trigger()`。事件处理函数存储在静态变量中,事件触发时按顺序执行。Yii2的事件机制支持类级别、对象级别和全局级别事件,sender信息根据事件类型自动设置。
摘要由CSDN通过智能技术生成

虽然PHP语言本身不能实现异步事件,但是并不代表事件在PHP中不是
一个非常有效的代码注入方式。TinkSNS中就有钩子,允许用户在不修
改主体业务代码的时候执行不同的操作。钩子对于一些活动,比如充
值送积分,充值打折扣。不同的活动,不一样,如果每次都要修改充
值业务的主体代码,不仅麻烦,而且容易产生bug。因此可以在充值成
功之后触发充值成功的事件,在事件处理中去处理相应的返现,优惠打
折操作。

看一下Event类的主体结构


class Event extends Object{

	public $name;
	public $sender;
	public $handled = false;
	private static $_events = [];
	public static function on($class, $name, $handler, $data = null, $append = true) {

	}

	public static function off($class, $name, $handler = null) {

	}

	public static function offAll() {}

	public static function hasHandlers($class, $name) {

	}

	public static function trigger($class, $name, $event = null) {

	}
}

整个类非常简单。事件绑定,事件解绑,解绑所有事件,是否绑定事件,触发事件五个函数,实现
事件处理机制。所有通过静态方法绑定的事件都存储在静态变量_events中。

1.事件绑定
	p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值