东莞网站优化推广方案,夜无忧论坛官网,刚刚北京传来重大消息,做网站的旅行社【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客
《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书
使用Composer初始化ThinkPHP 8应用_thinkphp8 compos…【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客
《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书
使用Composer初始化ThinkPHP 8应用_thinkphp8 composer.json-CSDN博客
编程与应用开发_夏天又到了的博客-CSDN博客
ThinkPHP 8提供了Request对象用于封装HTTP请求。下面我们一起来学习如何在ThinkPHP 8中进行请求处理比如获取请求参数、校验请求参数等。
6.2.1 获取请求对象
Request对象由ThinkPHP 框架实例化开发者需要手动实例化Request对象。ThinkPHP 框架提供了4种方法来获取Request对象读者可以根据自己的项目要求或者个人习惯固定使用一种获取方式并保持一致性以提高开发效率。
1. 继承BaseController
前面的内容提到过BaseController提供了Request实例和App实例因此可以直接继承BaseController再通过$this-request获取请求实例。
2. 调用助手函数
笔者常用的方法是在ThinkPHP 框架底层通过依赖注入容器对请求对象进行单例处理只有第一次调用request()函数会自动创建请求对象以避免多次调用产生的开销问题。
笔者推荐使用该方法获取请求对象具体用法参看下面示例。
【示例6-6】
?php
// 控制器
namespace app\controller;use app\BaseController;class Index extends BaseController
{public function index(){$url request()-url();return $url;}
}启动服务器后在浏览器中访问http://localhost:8000查看输出结果。
3. 构造方法注入
在未继承BaseController的情况下我们可以定义一个Request属性和对应的构造方法框架会自动通过依赖注入构造请求对象。具体示例如下。
【示例6-7】
新建app/controller/Index.php文件代码如下
?php
// 控制器
namespace app\controller;use app\Request;class Index
{protected Request $request;/*** param Request $request*/public function __construct(Request $request){$this-request $request;}public function index(){return $this-request-url();}
}启动服务器后在浏览器中访问http://localhost:8000查看输出结果。从示例代码可以发现通过构造方法注入请求对象代码量有点多因此一般不建议使用该方法。
4. 静态方法调用
某些场景下未使用依赖注入可以通过Request门面来获取Request对象。具体示例如下。
【示例6-8】
新建app/controller/Index.php文件代码如下
?php
// 控制器
namespace app\controller;use think\facade\Request;class Index
{public function index(){return Request::url();}
}启动服务器后在浏览器中访问http://localhost:8000查看输出结果。
5. 操作方法注入
构造方法的注入需要给控制器定义相关的属性。而操作方法的注入只需要直接调用参数即可不需要给控制器定义额外的属性其缺点是只能在这个操作方法内部调用。具体示例如下。
【示例6-9】
新建app/controller/Index.php文件代码如下
?php
// 控制器
namespace app\controller;use think\Request;class Index
{public function index(Request $request){return $request-url();}
}启动服务器后在浏览器中访问http://localhost:8000查看输出结果。
6.2.2 获取请求上下文信息
请求上下文信息可以理解为本次请求的元数据比如请求方法、访问路径等。想了解更多信息可以前往ThinkPHP官方网站自行查询。
【示例6-10】
新建app/controller/Index.php文件代码如下
?php
// 控制器
namespace app\controller;use think\Request;class Index
{public function index(){return json([url request()-url(),controller request()-controller(),action request()-action(),host request()-host()]);}
}输出结果如下
{
url: /,
controller: Index,
action: index,
host: 0.0.0.0:8000
}可以使用Request对象的method方法以及对应的is函数来判断当前请求方法。比如登录接口只允许POST请求那么就可以通过request()-isPost()方法来判断是否使用了POST请求方法。
【示例6-11】
新建app/controller/Index.php文件代码如下
?php
// 控制器
namespace app\controller;use think\Request;class Index
{public function index(){return json([method request()-method(),is_get request()-isGet(),is_post request()-isPost()]);}
}直接使用浏览器访问http://localhost:8000/输出结果如下
{
method: GET,
is_get: true,
is_post: false
}