think\Hook::listen PHP Method

listen() public static method

监听标签的行为
public static listen ( string $tag, mixed &$params = null, mixed $extra = null, boolean $once = false ) : mixed
$tag string 标签名称
$params mixed 传入参数
$extra mixed 额外参数
$once boolean 只获取一个有效返回值
return mixed
    public static function listen($tag, &$params = null, $extra = null, $once = false)
    {
        $results = [];
        $tags = static::get($tag);
        foreach ($tags as $key => $name) {
            $results[$key] = self::exec($name, $tag, $params, $extra);
            if (false === $results[$key]) {
                // 如果返回false 则中断行为执行
                break;
            } elseif (!is_null($results[$key]) && $once) {
                break;
            }
        }
        return $once ? end($results) : $results;
    }

Usage Example

 /**
  * 初始化方法
  * @author jry <*****@*****.**>
  */
 protected function _initialize()
 {
     // 系统开关
     if (!C('TOGGLE_WEB_SITE')) {
         $this->error('站点已经关闭,请稍后访问~');
     }
     // 获取所有模块配置的用户导航
     $mod_con['status'] = 1;
     $_user_nav_main = array();
     $_user_nav_list = D('Admin/Module')->where($mod_con)->getField('user_nav', true);
     foreach ($_user_nav_list as $key => $val) {
         if ($val) {
             $val = json_decode($val, true);
             if ($val['main']) {
                 $_user_nav_main = array_merge($_user_nav_main, $val['main']);
             }
         }
     }
     // 监听行为扩展
     \Think\Hook::listen('corethink_behavior');
     $this->assign('meta_keywords', C('WEB_SITE_KEYWORD'));
     $this->assign('meta_description', C('WEB_SITE_DESCRIPTION'));
     $this->assign('_new_message', cookie('_new_message'));
     // 获取用户未读消息数量
     $this->assign('_user_auth', session('user_auth'));
     // 用户登录信息
     $this->assign('_user_nav_main', $_user_nav_main);
     // 用户导航信息
     $this->assign('_user_center_side', C('USER_CENTER_SIDE'));
     // 用户中心侧边
     $this->assign('_user_login_modal', C('USER_LOGIN_MODAL'));
     // 用户登录弹窗
     $this->assign('_home_public_layout', C('HOME_PUBLIC_LAYOUT'));
     // 页面公共继承模版
 }
All Usage Examples Of think\Hook::listen