多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 分组路由 分组路由可以把相同的信息或者相同的前缀放到同一个分组里可以提供匹配速度,该路由组件支持无限级子组,当然也不套太多层级,递归也是需要速度的。 [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方法一样可以实现 ### 注意 如果使用路由分组并且存在子组由那么子组路由的参数必须齐全