通过事件(Event)处理,可以在某个特定时刻执行指定的代码,可以解耦代码,同时也增加了可维护性,通常,事件在客户端软件中比较好理解,比如onClick,onFocus,当点击按钮,获取到焦点时执行指定代码。在PHP中,事件的处理可能不太好理解,但是,只要理清了事件处理的过程,一切都会变得简单:

1.注册(或者说绑定)针对某个动作事件的处理器(handler)

2.触发某个动作事件

3.触发1中注册(绑定)的处理器

4.执行处理器中的代码

 

下面以 猫叫鼠跑 这个例子来简单说明Yii2中的事件处理。

Controller中的代码:

Cat类代码:

 

Mouse类代码:

执行actionTest时,会依次输出以下结果


 

在Yii2中,事件分为三个级别:

1.实例事件(同上面的例子,仅对某个实例有效)

2.类事件(对整个类有效)

3.全局事件(对全局有效)


 

除了绑定事件外,某些场合也需要移除绑定的事件,常用方法有以下几种:

 

Related Posts

发表评论