> ## 检测变量是否被设置
```
方法一:
Request::instance()->has('id','get');
Request::instance()->has('name','post');
方法二:
input('?get.id');
input('?post.name');
```
> ## 获取超全局变量的值
> ### 变量类型方法('变量名/变量修饰符','默认值','过滤方法')
|方法|描述|
|---|---|
|param|获取当前请求的变量|
|get|获取 $_GET 变量|
|post|获取 $_POST 变量|
|put|获取 PUT 变量|
|delete|获取 DELETE 变量|
|session|获取 $_SESSION 变量|
|cookie|获取 $_COOKIE 变量|
|request|获取 $_REQUEST 变量|
|server|获取 $_SERVER 变量|
|env|获取 $_ENV 变量|
|route|获取 路由(包括PATHINFO) 变量|
|file|获取 $_FILES 变量|
```
第一种获取方法:
// 获取单个变量(其他方法一样)
Request::instance()->param('name');
// 获取所有变量(经过过滤)(其他方法一样)
Request::instance()->param();
// 获取所有变量(原始数据)(其他方法一样)
Request::instance()->param(false);
// 获取所有变量(包含上传文件)
Request::instance()->param(true);
第二种获取方法:
// 获取单个变量(其他方法一样)
input('param.name');
// 获取所有变量(其他方法一样)
input('param.');
或者 // 因为input默认就是采用的param方式获取,所以可以这样简写
input('name');
input('');
```
>## 对请求变量进行过滤与设置不过滤(不要相信任何用户传递过来的数据)
```
第一种方式:在框架配置文件中添加默认过滤规则
// 默认全局过滤方法 用逗号分隔多个
'default_filter' => 'htmlspecialchars',
第二种方式:使用Request对象进行过滤
// 使用PHP内置的方法
Request::instance()->filter('htmlspecialchars'); // 过滤请求对象
Request::instance()->filter(['strip_tags','htmlspecialchars']), // 数组传入多个过滤方法
Request::instance()->param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤
Request::instance()->get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤
Request::instance()->post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤
// 使用PHP内置的Filter ID进行过滤(该方式如果不符合会返回false,所以需要和默认值配合使用)
Request::instance()->post('email','',FILTER_VALIDATE_EMAIL);
还可以简写
Request::instance()->post('email','','email');
// 对变量不进行过滤,直接获得原始数据
Request::instance()->get('name','',null); // 获取get变量 并且不进行任何过滤 即使设置了全局过滤
```
> ## 获取请求的部分变量
```
// 只获取id和name变量
Request::instance()->only('id,name');
Request::instance()->only(['id','name']);
// 只获取GET请求的id和name变量
Request::instance()->only(['id','name'],'get');
// 只获取POST请求的id和name变量
Request::instance()->only(['id','name'],'post');
```
> ## 排除请求的部分变量
```
// 排除id和name变量
Request::instance()->except('id,name');
Request::instance()->except(['id','name']);
// 排除GET请求的id和name变量
Request::instance()->except(['id','name'],'get');
// 排除POST请求的id和name变量
Request::instance()->except(['id','name'],'post');
```
>## 变量修饰符(如果不加默认为/s,如果获取的变量是数组一定要加/a才能正确获取)
>### input('变量类型.变量名/修饰符');
>### Request::instance()->变量类型('变量名/修饰符');
```
input('get.id/d');
Request::instance()->get('id/d');
```
|修饰符|作用|
|---|---|
|s|强制转换为字符串类型|
|d|强制转换为整型类型|
|b|强制转换为布尔类型|
|a|强制转换为数组类型|
|f|强制转换为浮点类型|