
yii2.0 事件怎么使用
yii2.0 事件怎么使用
1.首先要创建一个Person类
<?php namespace frontend\entity; /** * Created by PhpStorm. * User: Administrator * Date: 2018/1/22 * Time: 9:17 */ class Person extends \yii\base\Component { const EVENT_GREET = 'helloWorld'; //事件名 }
2.接着创建一个事件类
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/1/22 * Time: 9:26 */ namespace frontend\event; class SayEvent extends \yii\base\Event { public static $msg = 'say hello'; const HAHA = '3123'; }
3.接着控制器里面配置
/** * 实例事件 */ public function actionEntityTest(){ $person = new Person(); $person->on(Person::EVENT_GREET, [$this,'person_say_hello']); //实例事件绑定 $person->on(Person::EVENT_GREET, function ($event){ //这边再次绑定一个事件 var_dump($event::$msg); var_dump($event::HAHA); }); // $person->off(Person::EVENT_GREET); //删除绑定事件 $person->trigger(Person::EVENT_GREET,new SayEvent()); //执行时事件按照绑定先后顺序执行,而不是覆盖 } /** * 类级别事件,这个和上面的实例事件绑定的区别就是绑定的是类名,而不是实例 */ public function actionClassTest(){ Event::on(Person::className(),Person::EVENT_GREET,function ($event){ var_dump($event::$msg); }); Event::trigger(Person::className(),Person::EVENT_GREET,new SayEvent()); } /** *事件绑定方法,每个事件绑定方法必须带上一个$event,这个$event 就是new SayEvent()实例 */ public function person_say_hello($event){ var_dump('hello world'); var_dump($event::$msg); var_dump($event::HAHA); }
最后直接浏览器查看效果
如果还需要深入了解,可以参考 http://www.digpage.com/event.html