# 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信息]);
```
- 基础
- 安装PHP
- 语言基础
- 变量
- 变量操作
- 超全局数组变量
- 变量作用域
- 变量传值方式
- 常量
- 数据类型
- 运算符
- 流程控制
- 文件包含
- 错误处理
- 字符串操作
- 数组
- 函数
- 进阶
- 面向对象
- 提高
- TP
- 安装项目
- 框架基础知识
- 命令创建模块
- URL生命周期
- 路由操作
- Request请求类
- 参数绑定
- 依赖注入
- 模板操作
- 查询操作
- 添加操作
- laravel
- ☆目录结构
- CSRF攻击
- ☆路由
- ☆控制器
- ☆请求类
- ☆视图
- ☆模板继承
- ☆表单验证
- ☆DB类
- ☆模型
- ☆数据库迁移
- 类型、修饰、索引
- ☆数据填充
- ☆数据分页
- ☆session处理
- ☆中间件
- ☆缓存操作
- ☆文件上传
- ☆接口操作
- ☆扩展插件
- restful
- 工作
- 工作记录
- QQ登录
- 新浪登录
- 微信登录
- sphinx搜索
- 数据库
- MySQL
- ☆数据库操作
- ☆数据表操作
- ☆数据的操作
- 待修改
- 优化
- 存储引擎选择
- 列表类型选择
- 范式
- 慢日志查询
- 精准时间记录查询
- 计划任务 explain
- 索引
- 索与事务
- 查询缓存
- 存储过程
- 触发器
- 分区
- 分表
- sphinx
- 读写分离
- 搜索优化
- 网站静态化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服务器
- Linux
- 目录结构
- 常用命令
- VIM编辑器
- 用户与用户组
- 权限管理
- 运行级别
- 网络模式
- ssh
- 软件安装
- 计划任务
- Ubuntu
- 编译PHP7.3
- 编译MySQL
- 编译Nginx
- apache虚拟机配置
- 安装composer
- Nginx
- Git