php

thinkphp如何获取请求参数

2023-05-04

请求对象

  介绍:对http请求参数的读取,不管是post还是get,都是通过使用请求对象类Request来实现的。文件目录(tp6:vendor\topthink\framework\src\think\Request.php)


注入方法:


1.通过构造函数注入

<?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');

    }    

}



2.直接在方法中注入

<?php

namespace app\index\controller;

use think\Request;


class Index

{

    public function index(Request $request)

    {

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

    }    

}


3.通过静态方法调用

<?php

namespace app\index\controller;

use think\facade\Request;


class Index

{

    public function index()

    {

        return Request::param('name');

    }    

}


4.助手函数

<?php

namespace app\index\controller;

class Index

{

    public function index()

    {

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

    }

}


获取请求传参

万能方法,可以获取任何请求的参数(除了文件(file)之外);file需要使用file()方法获取

  request->param()


<?php

namespace app\controller;

use app\BaseController;

use app\Request;


class User extends BaseController

{

    public function register(Request $req){

        $req->param();//获取所有参数,返回一个数组,里面是参数集合

        $req->param("name");//获取指定字段的参数

    }

}


指定请求类型获取,只能获取对应请求的参数

get    获取 $_GET 变量

post    获取 $_POST 变量

put    获取 PUT 变量

delete    获取 DELETE 变量

session    获取 SESSION 变量

cookie    获取 $_COOKIE 变量

request    获取 $_REQUEST 变量

server    获取 $_SERVER 变量

env    获取 $_ENV 变量

route    获取 路由(包括PATHINFO) 变量

middleware    获取 中间件赋值/传递的变量

file    获取 $_FILES 变量 //这个是比较常用的


获取请求类型  request->method()//获取当前请求类型

<?php

namespace app\controller;

use app\BaseController;

use app\Request;


class User extends BaseController

{

    public function register(Request $req){

       $requestType= $req->method();//永远返回大写字符串

        var_dump($requestType);

    }

}


获取当前请求类型    method

判断是否GET请求    isGet

判断是否POST请求    isPost

判断是否PUT请求    isPut

判断是否DELETE请求    isDelete

判断是否AJAX请求    isAjax

判断是否PJAX请求    isPjax

判断是否JSON请求    isJson

判断是否手机访问    isMobile

判断是否HEAD请求    isHead

判断是否PATCH请求    isPatch

判断是否OPTIONS请求    isOptions

判断是否为CLI执行    isCli

判断是否为CGI模式    isCgi


获取请求头数据  request->header()

<?php

namespace app\controller;

use app\BaseController;

use app\Request;


class User extends BaseController

{

    public function register(Request $req){

        $heads= $req->header();//获取全部请求头

        $heads= $req->header('content-type');//获取指定请求头值

        var_dump($heads);

    }

}