## 杂项
[TOC]
### 设置匹配模式
在通过调用方法的方式注册路由后,方法的返回值是当前对象。所以,这样可以进行链式操作。
有一个方法where();用来设置单独设置匹配模式,不过由于在注册是可以直接设置所以没什么大用
示例:
`Route::any('/a-{aid}','index/index/index')->where(['id'=>'(\d+)']);`
### 可选参数
在写路由匹配模式是通过{params}来确定一个参数,也可以通过`{params?}`表示这是一个可选参数
例如:
`Route::any('/a-{aid}-{aid?}','index/index/index')->where(['id'=>'(\d+)']);`
后面的那一个参数有没有都可以。
### 路由命名
可以对当前路由进行命名,不过仅仅当次请求有效,不推荐使用
`Route::any('/a-{aid}','index/index/index')->name('read_article');`
### 隐式传参数
如果当前路由匹配成功后不在继续匹配那么可以使用隐私传参
`Route::any('/a-{aid}','index/index/index?rel=baidu.com&time=32322323');`
### 获取动态参数
`Route::any('/a-{aid}','index/index/index?rel=baidu.com&aid={:1}');`
通过`{:i}`的方式来获取动态参数如果不存在默认为空,顺序从1开始
### 改变pathinfo
有时候我们想要修改pathinfo,在后面追加一些东西
可以使用`{$ext}`的方式来获取一些server的东西
`Route::any('/a-{aid}','index/index/index.{$ext});`
在规则匹配后会自动替换
#### 可选变量列表
~~~
$v['{$pathinfo}'] = $this->option['pathinfo'];
$v['{$http_host}'] = $this->option['http_host'];
$v['{$request_scheme}'] = $this->option['request_scheme'];
$v['{$script_name}'] = $this->option['script_name'];
$v['{$request_uri}'] = $this->option['request_uri'];
$v['{$path_info}'] = $this->option['path_info'];
$v['{$request_method}'] = $this->option['request_method'];
$v['{$query_string}'] = $this->option['query_string'];
$v['{$http_referer}'] = $this->option['http_referer'];
$v['{$ext}'] = $this->option['ext'];
$v['{$server_name}'] = $this->option['server_name'];
$v['{$request_time}'] = $this->option['request_time'];
~~~
## 保存规则
在正常情况下路由的规则全部是缓存起来的,那么我们要更改一个规则就非常麻烦。
所以,路由组件提供了响应的方法来进行规则的增加删除和修改。
### 删除规则
~~~
/**
* 删除一条正则规则
* @param [type] $key [规则名称]
* @param string $method [请求方法]
* @return [type] [description]
*/
public function deleteRule($key, $method = 'get')
~~~
### 删除一个静态路由
~~~
/**
* 删除一个静态路由
* @param [type] $key [匹配地址]
* @return [type] [description]
*/
public function deleteMap($key)
~~~
### 删除一个域名路由
~~~
/**
* 删除一个域名路由
* @param [type] $key [域名]
* @return [type] [description]
*/
public function deleteDomain($key)
~~~
### 添加一个不需要解析的正则路由
该方法没有解析地址而是直接通过合并的方式添加到路由规则里
~~~
/**
* 添加解析好的正则规则
* @param array $rules [规则]
* @param string $method [请求方法]
*/
public function addRules(array $rules, $method = 'any')
~~~
### 保存
在一系列的操作之后并没有保存到文件,需要调用保存方法
~~~
/**
* 保存当前规则到缓存
* @return [type] [description]
*/
public function save()
~~~
### 获取正则路由规则的引用
~~~
/**
* 返回规则引用
* @return [type] [description]
*/
public function &getRulesQuote()
~~~
### 路由选项可以参数列表
#### 后缀检查
~~~
/**
* 后缀检查 可以多个后缀用|隔开
* @param [type] $op [description]
* @return [type] [description]
*/
private function ext($op)
~~~
#### 禁止后缀
~~~
/**
* [deny_ext 禁止后缀 检查 多个后缀用|隔开]
* @param [type] $op [description]
* @return [type] [description]
*/
private function deny_ext($op)
~~~
#### 请求方法检查
~~~
/**
* 方法检查 可以多种方法使用 |分割
* @param [type] $op [description]
* @return [type] [description]
*/
private function method($op)
~~~
#### 是否是https
~~~
/**
* 是否是https
* @param [type] $op [description]
* @return [type] [description]
*/
private function https($op)
~~~
#### 检查http_host域名
~~~
/**
* 检查http_host域名 多个用|隔开
* @param [type] $op [description]
* @return [type] [description]
*/
private function isDomain($op)
~~~
#### pajx检查
~~~
// 是否是pajx 如果为true表示必须是这个来源如果$op为false表示不能是这个来源
private function pjax($op)
~~~
#### 来源检查
~~~
/**
* 来源域名
* @param [type] $op [description]
* ['www.baidu.com',1] 存在第二个参数视为 不能是这个来源
* @return [type] [description]
*/
private function referer(array $op)
~~~
#### 端口检查
~~~
/**
* 端口
* @param [type] $op [description]
* [80,1] 存在第二个参数视为 不是这个端口
* @return [type] [description]
*/
private function port(array $op)
~~~
#### 路由前缀
~~~
/**
* 路由前缀和 别名路由相同
* @param array $op [第一个参数是前缀,如果存在第二个表示不能是这个前缀]
* @return [type] [description]
*/
private function prefix($op = [])
~~~
#### 检查是否存在一些参数
~~~
/**
* 检查是否存在某些参数
* @param array $op [description]
* @return [type] [description]
*/
private function param(array $op = [])
~~~
#### 自定义回调函数
~~~
/**
* 自定义回调
* @param [type] $op [回调函数 调用时会传入当前对象]
* @return function [description]
*/
private function callback($op)
~~~
- 简介
- 开发规范
- 许可协议
- 作者
- 安装框架
- 更新日志
- 基础
- 入口文件
- 全局变量
- 系统配置
- 目录结构
- 系统常量
- 自动加载
- 系统函数
- 应用密匙
- 依赖注入
- 配置
- 说明
- 基本使用
- 扩展应用
- C函数
- 容器
- 介绍
- 使用容器
- 绑定服务
- 数组访问
- 请求
- 基础
- 函数常量
- 获取信息
- 方法伪造
- 路由
- 基础使用
- 域名路由
- 静态路由
- 正则路由
- 路由分组
- 地区
- 资源路由
- 闭包
- 其它方法
- 响应
- 响应输出
- session
- 设置
- 生命周期数据
- cookie
- 加密使用
- 中间件(钩子)
- 基础使用
- 保存到文件
- 数据
- 配置
- 核心操作
- 聚合查询
- 查询构造器
- 关系型数据库关联
- 事务处理
- 日志
- 日志
- 视图
- 模板配置
- 模板文件
- 模板语言
- 基础使用
- 内置标签
- 扩展标签库
- 模板
- 变量输出
- 原样输出
- 运算符
- 缓存
- 缓存配置
- 基本操作
- 多语言
- 基础使用
- 扩展库
- 数据验证
- xml
- 压缩
- 工具类
- 字符串
- 文件上传
- 目录操作
- 二维码
- 验证码
- 图片处理
- curl
- url生成