TP5.1的Request以及构造方法注入以及助手函数的使用

xiaoxiao2021-03-01  13

第一个是构造方法的使用

<?php namespace app\index\controller; use think\Request; class Index { /** * @var \think\Request Request实例 */ protected $request; /** * 构造方法 * @param Request $request Request对象 * @access public */ public function __construct(Request $request) { $this->request = $request; } public function index() { return $this->request->param('name'); } }

 这样子就可以在下面的方法中使用$this->request进行获取;

为什么要用这种方法呢?当然并不是一定的,如果你要直接用的话你可以直接使用

return $this->request->param('name');

只要的你类继承了系统的基类

但是还有一个就是比较不好的就是Request:: 的使用情况:

<?php namespace app\index\controller; use think\Controller; use think\facade\Request; class Index extends Controller { public function index() { return Request::param('name'); } }

首先他无法在__contruct的构造函数中进行获取

其次他无法直接获取出一个数组:情况是

只是用Request::param('arr')无法获取到参数值(会报错),但可以这么做,$params = Request::param();$arr = $params['arr'];这样可以获取到数组,但没有Request::param('arr')来的直接方便,这应该是方法设计上的缺陷吧!

简单来说如果你的构造函数内需要用到request信息的话就不能使用Request这个方式。

但是有一个小技巧可以绕过去,那就是tp5.1的前置操作

//前置操作     protected $beforeActionList = [         'inSet',           ];     public function inSet()     {   

          $id = Request::param('id');

    }

这样子就可以进行类似构造函数的使用相对来说比较方便。但是看情况而用

构造函数在使用一次new的时候已经执行并且只执行一次

而前置函数你每次使用类方法的时候都会执行一次,所以说本地项目推荐使用构造

接口项目本人推荐使用前置方法!到此request相关介绍完毕,喜欢的可以点个关注吧!谢谢!

转载请注明原文地址: https://www.6miu.com/read-4150044.html

最新回复(0)