Thinkphp5基础——10 请求参数

本文介绍了在ThinkPHP5中如何获取请求参数,包括通过继承Controller、依赖注入、Facade调用和助手函数四种方式。此外,还讲解了请求参数的绑定,如何将URL中的变量直接传入操作方法作为参数,实现更便捷的参数处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取请求参数


获取请求参数的方式从类型上看,分为1. 请求对象获取2. 助手函数直接获取 两种形式。




请求对象获取


官方解释

当前的请求对象由think\Request类负责,在很多场合下并不需要实例化调用,通常使用依赖注入即可。

在其它场合(例如模板输出等)则可以使用think\facade\Request静态类操作。



获取方式


1. 继承了think\Controller

直接使用$this->request()->param('请求参数key')



2. 依赖注入

1)构造函数注入

步骤:

1)引用think\Request类;

2)构造函数依赖注入,并将think\Request实例保存为类属性;

3)index操作方法调用类属性获取实例对象,再调用param()方法获取请求参数。



use think\Request;

class Index 
{
	protected $request;
	
	public function __construct(Request $request)
	{
	  $this->request = $request;
	}
    
	public function index()
	{
	  return $this->request->param('name');
	}  
	
}  



2)操作方法注入

步骤:

1)引用think\Request类;

2)操作方法依赖注入,直接使用think\Request实例的方法获取请求参数。


use think\Request;

class Index 
{
    
	public function index(Request $request)
	{
	  return $request->param('name');
	}    
}

#### 扩展部分
实际上,我们还可以直接使用 $request->参数key 的形式直接获取变量。




3. Facade调用

Facade可以让类无需实例化而直接进行静态方式调用。

实际上Facade做的事情就是创建一个代理类,在调用Facade的时候, 间接调用原来的类,然后使用类方法。


步骤:

1)引用think\facade\Request类,此时Request实际上就是think\Request类,并且可以静态调用原来的类方法;

2)静态调用param()方法获取请求参数。


<?php

use think\facade\Request;

class Index 
{
    
	public function index()
	{
	  return Request::param('name');
	}    
}




4.助手函数
request()->param('参数key')

class Index extends Controller
{

	public function index()
	{
	  return request()->param('name');
	}
}





助理函数获取

input('参数key')

input('param.参数key')

input('post.')    // 获取全部post变量

input('get.')     // 获取get全部变量 






请求参数绑定

参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入,参数绑定并不区分请求类型。


举个例子,路由里面定义下面的路由:
Route::get('api/:version/order/:id','api/:version.Order/getOrderDetail');

上面的路由表示它将接收一个id参数,并且将会把这个id参数传到getOrderDetail()方法。

再来看看getOrderDetail()方法:

public function getOrderDetail($id){

	return '我是路由传过来的id参数:' . $id;
}

这便是所谓的参数绑定,按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致。

### ThinkPHP8 中 API 接口请求的处理 在 ThinkPHP8 框架中,API 请求的处理主要依赖于控制器的功能设计以及路由配置。以下是关于如何通过 ThinkPHP8 实现 API 接口请求的具体说明。 #### 控制器中的接口实现 ThinkPHP 的核心理念之一是 MVC 架构模式,其中控制器(Controller)负责接收 HTTP 请求并返回响应数据。为了实现一个简单的 API 接口,可以按照如下方式操作: 1. **定义控制器类** 需要在 `app/controller` 下创建一个新的控制器文件,并为其命名以便区分业务逻辑。例如,假设我们要为用户登录功能创建一个接口,则可以在 `User.php` 文件中定义 `login()` 方法来完成这一需求[^3]。 2. **引入必要的库** 如果涉及到第三方工具或者扩展包(如 JWT 插件),则需要提前加载这些资源到项目环境中。下面是一个基于 JWT 认证机制生成 Token 的例子: ```php <?php namespace app\controller; use think\Controller; use thans\jwt\facade\JWTAuth; class User extends Controller { public function login() { // 假设这里已经验证过用户的用户名密码或者其他认证信息 // 创建 token 并附带一些自定义负载 (payload),比如 uid 和 name 字段 $token = JWTAuth::builder([ 'uid' => 1, // 用户唯一标识符 'name'=> 'test', // 用户名或其他可识别的信息 ]); return json(['status'=>'success','data'=>['token'=>$token]]); } } ``` 上述代码片段展示了如何利用 JWT 来构建安全令牌的过程。 #### 路由设置 为了让客户端能够访问该接口地址,还需要正确地配置好对应的 URL 映射关系——即所谓的 “路由”。这一步骤可以通过修改应用目录下的 `route/app.php` 或者其他指定位置来进行设定。例如: ```php use think\facade\Route; Route::post('user/login', 'User@login'); ``` 此部分描述了当收到 POST 类型请求至 `/user/login` 地址时,应调用哪个具体方法去执行实际的任务[^1]。 #### 数据交互与外部服务对接实例 除了内部系统的 RESTful APIs 开发之外,有时也需要与其他平台进行通信协作。以下给出了一种场景模拟:向微信服务器发送 HTTPS GET 请求以换取小程序 session_key 及 openid 等参数[^4]: ```php public function wechatLogin($code){ $url = "https://api.weixin.qq.com/sns/jscode2session?" . http_build_query([ 'appid' => config('wx.app_id'), 'secret' => config('wx.app_secret'), 'js_code' => $code, 'grant_type' => 'authorization_code' ]); try{ $response = file_get_contents($url); $result = json_decode($response,true); if(isset($result['openid'])){ // 成功获取 openid 后继续后续流程... return ['status'=>'ok','message'=>'授权成功']; }else{ throw new Exception("Error Processing Request", 1); } }catch(Exception $e){ return ['status'=>'error','message'=>$e->getMessage()]; } } ``` 以上脚本实现了从小程序端传来的临时 code 参数交换成正式身份凭证的操作步骤。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值