$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; } }