在ThinkPHP6.0中推荐使用Request对象的get()方法获取GET参数:单个参数用$this->request->get('id'),带默认值用$this->request->get('page', 1),全部参数用$this->request->get(),支持类型过滤如intval。

在 ThinkPHP6.0 中获取 GET 请求参数最常用、最推荐的方式是使用 Request 对象,它统一管理所有请求数据,安全且语义清晰。
使用 Request 类的 get() 方法
这是最标准的做法,适用于获取单个或多个 GET 参数:
- 获取单个参数:
$id = $this->request->get('id'); - 获取带默认值的参数:
$page = $this->request->get('page', 1); - 获取全部 GET 参数(数组):
$params = $this->request->get(); - 支持类型过滤(如转为整型):
$id = $this->request->get('id', '', 'intval');
在控制器中正确调用 Request 对象
确保控制器已正确引入并初始化 Request。通常有两种方式:
- 通过构造函数注入(推荐):
protected $request;<br>public function __construct(Request $request) {<br> $this->request = $request;<br>} - 直接使用助手函数:
$id = input('get.id');或$id = input('id');(默认读取 GET)
注意:input() 是快捷方式,底层仍调用 Request,但不如直接用 $this->request->get() 明确和可控。
立即学习“PHP免费学习笔记(深入)”;
区分 GET 和其他请求方式的参数
ThinkPHP 将不同来源的数据做了隔离,避免混淆:
-
$this->request->get():只读取 URL 查询字符串(?a=1&b=2)中的参数 -
$this->request->param():合并 GET、POST、PUT、PATCH 等所有参数(常用于 RESTful 接口) -
$this->request->only(['id', 'name'], 'get'):从 GET 中仅提取指定字段
若 URL 是 /user/index?id=5&name=thinkphp,get('id') 返回 5,而 post('id') 返回 null。
安全与验证建议
获取参数后建议配合验证机制使用,防止非法输入:
- 简单过滤:
$id = $this->request->get('id', 0, 'intval'); - 结合验证器:
validate(['id' => $id])->check(['id' => 'require|number']); - 路由变量优先于 GET:如果 id 是路由参数(如
'user/:id'),应优先用$this->request->param('id')获取,更符合 REST 设计



















