1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace loyalsoft;
- /**
- * 事件类
- * 用法: * Ps.在WebAPI模式下基本没啥用处 *
- * 注册事件: Event::register('ON_USER_ADD',function($data){
- * // 这里可以做一些事情
- * var_dump($data);
- * });
- * 触发事件: Event::trigger('ON_USER_ADD',array('userInfo'=>$userInfo,'result'=>&$result));
- * @version
- * 1.0.0 Created at 2017-3-24. by --gwang
- * @author gwang (mail@wanggangzero.cn)
- * @copyright ? 2017-3-24, SJZ LoyalSoft Corporation & gwang. All rights reserved.
- */
- class Event {
- /**
- * 事件绑定记录
- */
- private static $events = array();
- /**
- * 注册事件
- * @param string $event
- * @param callable $callback 可以是 方法|方法名|array(对象/对象类型, 方法名车)
- * @param bool $first 是否优先执行,以靠后设置的为准
- */
- public static function register($event, $callback, $first = false) {
- if (!isset(self::$events[$event])) {
- self::$events[$event] = array();
- }
- if ($first) {
- array_unshift(self::$events[$event], $callback);
- } else {
- self::$events[$event][] = $callback;
- }
- }
- /**
- * 触发事件(监听事件)
- * 不是引用传参方式,如有需要请使用triggerReference方法
- * @param name $event
- * @param array $params
- * @return boolean
- */
- public static function trigger($event, $params = array()) {
- $params = is_array($params) ? $params : array($params); # 确保参数一定是数组
- if (isset(self::$events[$event])) {
- foreach (self::$events[$event] as $item) {
- if (true === call_user_func($item, $params)) {
- return true; # 事件返回true时不继续执行其余事件
- }
- }
- return false;
- }
- return true;
- }
- }
|