🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 正则路由 所说的get post delete put any路由都是正则路由,只要有动态参数的都是通过正则表达式进行匹配的,所以称为正则路由。 [TOC] ### get路由 ~~~ /** * get请求方式的路由规则 * @param [type] $rule [路由规则] * @param [type] $route [路由地址] * @param array $option [路由选项] * 允许 文件后缀 ext 域名 domain 脚本文件 script_name 服务端口 server_port * 是否是 ajax pjax https 禁止文件后缀 deny_ext * @param array $pattern [动态参数正则匹配模式] * @param array $behavior [匹配后的行为] * @return [type] [description] */ public function get($rule, $route, $option = [], $pattern = [], $behavior = []) ~~~ `Route::get('blog-{aid}-{page}','article/index/read',['ext'=>'html'],['aid' => '(\d+)', 'page' => '(\d{1})']);` 实际的匹配表达式为:`blog-(\d+)-(\d{1})` 在配置中使用: ~~~ // get规则 'get' => [ ['a-{aid}-{page}', 'article/index/read', ['ext'=>'html'], ['aid' => '(\d+)', 'page' => '(\d{1})'], []], ], ~~~ 上面意思为匹配规则、路由地址、条件为后缀必须是html,匹配动态参数的模式 ### post路由 post路由所有的参数和注册方法等同于get路由,只是只在post请求下生效 `Route::post()` ### delete路由 delete路由所有的参数和注册方法等同于get路由,只是只在delete请求下生效 `Route::delete()` ### put路由 put路由所有的参数和注册方法等同于get路由,只是只在put请求下生效 `Route::put()` ### any路由 any路由所有的参数和注册方法等同于get路由,只是只在所有请求下生效 `Route::any()` ### rules路由 前面所有的路由方法全部是统一调用的rules路由 如果第一个参数为false那么路由规则必须是一个数组,这样表示是一个路由分组 ~~~ /** * 批量添加路由 * @param [type] $rule [规则] * @param [type] $route [路由到的地址] * @param string $method [方法] * @param [type] $option [条件] * @param [type] $pattern [正则规则匹配模式] * @param [type] $behavior[行为] * @return [type] [description] */ public function rule($rule, $route, $method = 'any', $option = [], $pattern = [], $behavior = []) ~~~ 不推荐使用调用函数的方式注册,推荐把规则写入配置文件,调用函数也是需要消耗时间的。 ### 匹配模式 在上面路由的参数中都有一个参数可以传入动态参数的匹配模式 如果不传入匹配模式这默认匹配模式为`([^/]+?)`可选参数的匹配模式`?([^/]+?)?` #### 全局匹配模式 如果有相同的动态参数名称并且匹配模式相同的话可以设置全局匹配模式`` `Route::globalPattern(['id'=>'(\d+)'])` 这样所有动态参数为id的全部都是应用到当前匹配模式 推荐在配置文件中写入 ~~~ // 全局替换模式 'globalPattern' => [ 'id'=>'(\d+)' ], ~~~