zoukankan      html  css  js  c++  java
  • TP5.1的Request以及构造方法注入以及助手函数的使用

    第一个是构造方法的使用

    <?php
    
    namespace appindexcontroller;
    
    use thinkRequest;
    
    class Index 
    {
        /**
         * @var 	hinkRequest 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 appindexcontroller;
    
    use thinkController;
    use thinkfacadeRequest;
    
    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相关介绍完毕,喜欢的可以点个关注吧!谢谢!

  • 相关阅读:
    Cookie天使还是恶魔?
    Nhibernate学习起步之manytoone篇
    共享终结者ShareKiller
    基于弹性碰撞原理的抖动式窗口
    Nhibernate分析之华山论剑篇
    Nhibernate学习之manytomany篇
    JavaScript常用字符串函数
    让全中国人蒙羞的搜索爬虫
    近期项目的一些代码总结
    Nhibernate学习之性能改善1
  • 原文地址:https://www.cnblogs.com/hoewang/p/10257214.html
Copyright © 2011-2022 走看看