多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] >[info] 本文记录获取请求对象的五种方式 >[success] `think\Request`、`think\facade\Request`、`app\Request` 之间的联系 **官方手册原文** 当前的请求对象由think\Request类负责,该类不需要单独实例化调用,通常使用依赖注入即可。在其它场合则可以使用think\facade\Request静态类操作。项目里面应该使用app\Request对象,该对象继承了系统的think\Request对象。 **个人总结** 请求信息本质上由think\Request类负责,但是使用的时候不应直接实例化调用。 要么使用 think\facade\Request 类静态调用,要么通过app\Request对象链式调用 #### 1. 门面类 --- ```php // app\Request 对象 $request = \think\facade\Request::instance(); dump($request); ``` #### 2. 依赖注入 --- **特别注意:注入的是 \think\Request,而不能是门面类 \think\facade\Request** ```php public function save(\think\Request $request) { // app\Request 对象 dump($request); } ``` ![](https://img.itqaq.com/art/content/ed62c623554910ddf8db3b7cf2ab94f4.png) #### 3. 框架提供的基础控制器的 `request` 属性 --- **继承基础控制器:BaseController.php** ```php <?php namespace app\controller; use app\BaseController; class User extends BaseController { public function index() { // app\Request 对象 $request = $this->request; dump($request); } } ``` **基础控制器构造方法** ![](https://img.itqaq.com/art/content/e499ee8cf223d45dd5c4aad8e9f0beb1.png) #### 4. request() 助手函数 --- request() 助手函数返回 `\app\Request` 对象 ```php // app\Request 对象 $request = request(); dump($request); ``` #### 5. app() 超级助手函数 --- ```php // app\Request 对象 $request1 = app('request'); // app\Request 对象 $request2 = app()->request; // app\Request 对象 $request3 = app()->app->request; dump($request1); dump($request2); dump($request3); ```