## 分组路由
分组路由可以把相同的信息或者相同的前缀放到同一个分组里可以提供匹配速度,该路由组件支持无限级子组,当然也不套太多层级,递归也是需要速度的。
[TOC]
#### 参数
~~~
/**
* 分组路由
* @param [array] $option [条件选项]
* @param [array] $route [路由地址 二维数组或者是一个闭包函数]
* @param [string] $method [请求方法]
* @param [array] $pattern [条件]
* @param [array] $name [分组名称]
* @param [array] $pattern [匹配模式]
* @param [array] $behavior[匹配后的行为]
* @return [object] [$this]
*/
public function group($option, $route, $method = 'any', $pattern = [], $name = '', $behavior = [])
~~~
示例:
~~~
$route = [
'testgroup/{id}' => ['route' => 'index/index/create', 'where' => ['id' => '(\d{1})'], 'option' => [],'behavior'=>[]],
'testgroup/{uid}' => ['route' => 'index/index/delete', 'where' => ['uid' => '(\d{2})'], 'option' => [],'behavior'=>[]],
'testgroup/{aid}' => ['route' => 'index/index/update', 'where' => ['aid' => '(\d{3})'], 'option' => [],'behavior'=>[]],
];
Route::group('['prefix' => 'testgroup', 'method' => 'get']',$route, 'get' );
~~~
在配置文件可以这样写
~~~
// 分组路由
'group' => [
[
['prefix' => 'testgroup', 'method' => 'get'],
[
'testgroup/{id}' => ['route' => 'index/index/create', 'where' => ['id' => '(\d{1})'], 'option' => [],'behavior'=>[]],
'testgroup/{uid}' => ['route' => 'index/index/delete', 'where' => ['uid' => '(\d{2})'], 'option' => [],'behavior'=>[]],
'testgroup/{aid}' => ['route' => 'index/index/update', 'where' => ['aid' => '(\d{3})'], 'option' => [],'behavior'=>[]],
],
'get',
],
],
~~~
无限递归方式:
其实路由分组的注册方法是简介的调用了rules方法
如果rules方法的第一个参数为空,那么当前这一条路由规则的键名并不是批评规则,而是数字,系统判断如果键名为数字表示一个分组路由,所有这样间接的实现的无限子级。
~~~
// 分组路由
'group' => [
// 一个分组路由
[
['prefix' => 'testgroup', 'method' => 'get'],
// 分组路由第二个参数 路由规则 如果直接是规则就直接匹配如果想下面一一是一个二维数组就递归
[
[
'option'=>['prefix' => 'testgroup', 'method' => 'get'],
'route'=>[
'testgroup/{id}' => ['route' => 'index/index/create', 'where' => ['id' => '(\d{1})'], 'option' => [],'behavior'=>[]],
'testgroup/{uid}' => ['route' => 'index/index/delete', 'where' => ['uid' => '(\d{2})'], 'option' => [],'behavior'=>[]],
'testgroup/{aid}' => ['route' => 'index/index/update', 'where' => ['aid' => '(\d{3})'], 'option' => [],'behavior'=>[]],
],
'where' => [],
]
],
'get',
],
~~~
所以总的来说,路由分组不必调用分组方法,调用get post delete put any rules方法一样可以实现
### 注意
如果使用路由分组并且存在子组由那么子组路由的参数必须齐全
- 简介
- 开发规范
- 许可协议
- 作者
- 安装框架
- 更新日志
- 基础
- 入口文件
- 全局变量
- 系统配置
- 目录结构
- 系统常量
- 自动加载
- 系统函数
- 应用密匙
- 依赖注入
- 配置
- 说明
- 基本使用
- 扩展应用
- C函数
- 容器
- 介绍
- 使用容器
- 绑定服务
- 数组访问
- 请求
- 基础
- 函数常量
- 获取信息
- 方法伪造
- 路由
- 基础使用
- 域名路由
- 静态路由
- 正则路由
- 路由分组
- 地区
- 资源路由
- 闭包
- 其它方法
- 响应
- 响应输出
- session
- 设置
- 生命周期数据
- cookie
- 加密使用
- 中间件(钩子)
- 基础使用
- 保存到文件
- 数据
- 配置
- 核心操作
- 聚合查询
- 查询构造器
- 关系型数据库关联
- 事务处理
- 日志
- 日志
- 视图
- 模板配置
- 模板文件
- 模板语言
- 基础使用
- 内置标签
- 扩展标签库
- 模板
- 变量输出
- 原样输出
- 运算符
- 缓存
- 缓存配置
- 基本操作
- 多语言
- 基础使用
- 扩展库
- 数据验证
- xml
- 压缩
- 工具类
- 字符串
- 文件上传
- 目录操作
- 二维码
- 验证码
- 图片处理
- curl
- url生成