Yii2之事件处理】的更多相关文章

通过事件(Event)处理,可以在某个特定时刻执行指定的代码,可以解耦代码,同时也增加了可维护性,通常,事件在客户端软件中比较好理解,比如onClick,onFocus,当点击按钮,获取到焦点时执行指定代码.在PHP中,事件的处理可能不太好理解,但是,只要理清了事件处理的过程,一切都会变得简单: 1.注册(或者说绑定)针对某个动作事件的处理器(handler) 2.触发某个动作事件 3.触发1中注册(绑定)的处理器 4.执行处理器中的代码 下面以 猫叫鼠跑 这个例子来简单说明Yii2中的事件处理…
我们先来看下事件在 Yii2 中的使用,如下内容摘自 Yii2中文文档 事件可以将自定义代码“注入”到现有代码中的特定执行点.附加自定义代码到某个事件,当这个事件被触发时,这些代码就会自动执行.例如,邮件程序对象成功发出消息时可触发 messageSent 事件.如想追踪成功发送的消息,可以附加相应追踪代码到 messageSent 事件. Yii 引入了名为 [[yii\base\Component]] 的基类以支持事件.如果一个类需要触发事件就应该继承 [[yii\base\Componen…
Behvaior类,Behavior类是所有事件类的基类: 目录yii2\base\Behavior.php <?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace yii\base; /** * Behavior is the base c…
众所周知,yii的三大特性是:属性.事件.行为,上一篇博文简单讲解了yii中的属性,本文接着讲讲yii的事件. 事件是代码解耦的一种方式,设计业务流程的一种模式.在yii2.0中,通过Yii\base\Component继承yii\base\Object,重载__get().__set()方法,引入了事件和行为,使得开发变得十分方便.然而,在方便开发的同时也牺牲了一定的效率,所以若不需要使用事件和行为,可不必继承Component而选择继承Object,Object的效率更接近原生的PHP类.…
1.先看PHP观察者模式的实现: 想要使用事件.必须实现事件的基类.统一的addObserver和trigger方法 定义统一接口.所有的观察者都要实现此接口 //事件的基类 abstract class BaseEvent { private static $observer; //添加观察者 public function addObserver($obj) { self::$observer[] = $obj; } //触发事件.通知所有的观察者 public function trigg…
说起事件(event),我们可是一点都不陌生.现实生活当中的事件无处不在,比如你发了一条微博,触发了一条事件,导致关注你的人收到了一条消息,看到你发的内容:比如你通过支付宝买东西,付了款,触发一个事件,导致你收到一条短信,告诉你刚刚扣款了,你账户余额还有多少... 我们将事件稍稍加以抽象,发现事件具有某些共同特点,比如事件其实不是孤立存在,它只是某个流程或者工序的一个特殊的"点",可以理解为时间点,也可以理解为逻辑的点:其次,事件上可以绑定一些"动作",比如发送一条…
最近一段时间正在作个一个项目,这个项目会系统逻辑比较复杂,使用PHP Yii2,使用事件驱动机制进行研发,下面就最近研究事件驱动机制的使用作以下总结: 流程如下: 1.要创建含有事件注入的类,一般这样的类都是组件类,即间接或直接的继承自 yii\base\Componet类 2. 要在该类中定义触发是事件名, 一般使用常量来定义,(这样作的好处是再注册事件时,事件名在IDE中可自动完成输入,不容易出错) eg. class foo { const EVENT_HELLO = 'event_hel…
一.前言 首先,yii2最为为数不多的PHP主流开源框架,受欢迎程度不亚于laravel和TP.个人认为,研究这些框架底层代码是非常有助于自身代码编程思想的提升和代码简化程度和质量的提升的. 那么,话不多说,下面开始说一下自己对yii2底层框架架构的理解. 二.客户端请求处理 yii2对客户请求处理,提供了url美化类urlManager,这点在最初通过composer加载,并初始化框架时,已经在config目录下的main文件里生成了, 只不过时注释过的,如果需要url美化则取消掉注释即可.其…
a yii2 extension to make simple to use queue. yii2-queue让队列的使用在yii2中变得更轻松,她为各种队列组件的使用提供了一个标准的接口,您只需要配置好需要使用的队列组件,就能轻松使用,同时您在不同队列组件之间的切换也只需要修改下配置文件,重启下队列监听进程即可,目前支持数据库队列,redis队列,beanstalkd队列,其它队列中间件支持正在添加中(当然,聪明的你也可以自行扩展). Installation The preferred w…
在项目实际开发中,有将打开的各个链接页面隔离的需求(防止静态资源起冲突),这个时候常规思路就是使用iframe来实现!但遇到一个比较棘手的问题,当用easyui Tabs打开一个iframe页面时,怎么解决原有共用静态资源引入的问题.有人建议可以考虑将共用静态资源文件放到一个php文件中,然后每次渲染页面时加载即可,这个时候很多朋友会想到PHP的include()方式,但是每个iframe页面都要include一次,岂不是很麻烦.而且项目的要求是iframe打开和easyui tabs href…