# Request 请求类 [TOC] Request 对象的作用是与客户端交互,收集客户端form、cookies、或收集服务器的环境变量。如果要获取当前的请求信息,可以使用`\think\Request`类,通过`Request`对象完成全局输入变量的检测、获取和安全过滤,支持包括`$_GET`、`$_POST`、`$_REQUEST`、`$_SERVER`、`$_SESSION`、`$_COOKIE`、`$_ENV`等系统变量,以及`$_FILES`。 ## Request的助手函数 使用Request方法很多,但是个人感觉助手函数比较方便使用。具体信息详见手册 `请求`。 `param`系统推荐使用方法获取当前请求变量, 该方法最大的优势是让你不需要区分当前请求类型而使用不同的全局变量或者方法, 并且可以满足大部分的参数需求。 param用法如下: ``` <?php $request = request(); $request->param(['要获取的值'],['默认值'],['过滤的方法']); ?> ``` `param`方法 能够获取所有参数 `get`方法 只能获取`?`后面的请求字符串的参数(也就是兼容模式传参) `route`方法 只能获取到`?`前面的路由中的参数 注意:在URL中`?`前面的属于路由用`/`传递参数,用get无法获取参数 ## 变量过滤 框架没有设置过滤的规则,如果需要设置变量的过滤规则,可以在application/config.php配置文件里面设置全局的规律规则 设置变量过滤规则: ``` // 默认全局过滤方法 用逗号分隔多个 'default_filter' => 'htmlspecialchars,trim' ``` request设置全局的变量规则: ``` $request = request(); $request->filter('trim'); ``` 获取变量设置过滤变量规则: ``` $request = request(); $request->param(['要获取的值'],['默认值'],['过滤的方法']); ``` ## 变量修饰符 `input param`函数支持对变量使用修饰符功能,可以更好的过滤变量 基本语法: ``` input('变量类型.变量名/修饰符'); Request::instance()->变量类型('变量名/修饰符'); input('post.ids/a'); //获取的数据现在的类型是数组了 Request::instance()->get('id/d'); //获取的数据现在是整型了 ``` 变量修饰符,就是说我们通过某一个方法接收变量的时候,传参的值可是浮点型可能是数组也可能是别的类型等,我们利用变量修饰符就可以给这个接受的值做申明。比如说接受了一个id它是字符串的(**默认情况下就是/s 字符串**),我们可以把它申明成数组 `id/a`。 如果你要获取的数据为数组,请一定注意要加上 `/a` 修饰符才能正确获取到 | 修饰符 | 作用 | | --- | --- | | s | 强制转换成字符串 | | a | 强制转换成数组 | ## input助手函数 input函数默认就采用PARAM变量读取方式,param与input用哪个都可以看个人习惯。 ``` input('?get.id'); input('?post.name'); ``` ## 自动输出 在我们`return`返回信息时,Tinkphp默认的自动响应输出会自动判断是否 `AJAX`请求, 如果是的话会自动去配置文件寻找 `default_ajax_return` 配置的输出类型 配置输出类型: ``` 'default_return_type' => 'json'; return $data; ``` ## 手动输出 ``` return json($data,[code 200],[header信息]); ```