第一个是构造方法的使用
<?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相关介绍完毕,喜欢的可以点个关注吧!谢谢!