/**
* 注册路由规则
* @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);// 调用执行 新产品
}
}
转载于:https://blog.51cto.com/jingshanls/1891971