牛骨文教育服务平台(让学习变的简单)
博文笔记

[李景山php]每天TP5-20170206|thinkphp5-Route.php-2

创建时间:2017-01-14 投稿人: 浏览次数:568
    /**
     * 注册路由规则
     * @access public
     * @param string    $rule 路由规则
     * @param string    $route 路由地址
     * @param string    $type 请求类型
     * @param array     $option 路由参数
     * @param array     $pattern 变量规则
     * @return void
     */
    public static function rule($rule, $route = "", $type = "*", $option = [], $pattern = [])
    {// 注册路由规则 $rule 路由规则 $route 路由地址 $type 请求参数 $变量规则
        $group = self::getGroup("name");// 获取当前 群组
        if (!is_null($group)) {// 如果当前 组不为空
            // 路由分组
            $option  = array_merge(self::getGroup("option"), $option);// 合并两个分组选项
            $pattern = array_merge(self::getGroup("pattern"), $pattern);// 合并另外的两个分组
        }

        $type = strtoupper($type);// strtoupper 全部转换为大写

        if (strpos($type, "|")) {// strpos 有类型
            $option["method"] = $type;// 选项
            $type             = "*";// 类型
        }
        if (is_array($rule) && empty($route)) {// 就是 各种流程处理
            foreach ($rule as $key => $val) {// 遍历循环
                if (is_numeric($key)) {// 如果是 数字
                    $key = array_shift($val);// 踢出
                }
                if (is_array($val)) {// 如果是数组
                    $route    = $val[0];// 返回值 0
                    $option1  = array_merge($option, $val[1]);// 选项
                    $pattern1 = array_merge($pattern, isset($val[2]) ? $val[2] : []);// 样式
                } else {
                    $route = $val;// 路由值
                }
                self::setRule($key, $route, $type, isset($option1) ? $option1 : $option, isset($pattern1) ? $pattern1 : $pattern, $group);
            }// 调用最后执行的 东西
        } else {
            self::setRule($rule, $route, $type, $option, $pattern, $group);// 调用执行 新产品
        }

    }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。