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

第一个是构造方法的使用

<?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.cnblogs.com/hoewang/p/10257214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值