Swoft 学习笔记之 request 请求

一、获取 request 对象

  • 通过控制方法参数注入的方式

    <?php declare(strict_types=1);
    
    namespace app\Http\Controller;
    
    use Swoft\Http\Message\Request;
    
    class TestController{
    
        public  function create(Request $request)
        {
    
        }
    }
  • 通过请求上下文获取

    <?php declare(strict_types=1);
    
    namespace app\Http\Controller;
    
    use Swoft\Context\Context;
    
    class TestController{
    
        protected $request;
    
        public function __construct(){
            $this->request = Context::mustGet()->getRequest();
        }
    
        public  function create()
        {
            $params = $this->request->input();
            //TODO  SOMETHING
        }
    }

二、获取请求数据

在介绍获取请求数据之前,我们先看一下源码,文件路径为 vendor/swoft/http-message/src/Request.php

    class Request extends PsrRequest implements ServerRequestInterface
    {
        use InteractsWithInput;

        .
        .
        .

    }

可见 Request 类继承了 PsrRequest 类,实现了 ServerRequestInterface 接口,并引用了 InteractsWithInput trait。

获取请求 method
    $method = $request->getMethod();
获取请求的 uri
    $uri        = $request->getUri();//该方法返回的是对象,是对象,是对象
    $scheme     = $uri->getScheme();
    $authority  = $uri->getAuthority();
    $userInfo   = $uri->getUserInfo();
    $host       = $uri->getHost();
    $port       = $uri->getPort();
    $path       = $uri->getPath();
    $query      = $uri->getQuery();
    $fragment   = $uri->getFragment();
获取请求 headers
    // 获取全部header
    $headers = $request->getHeaders();

    // 获取单个header
    $host = $headers = $request->getHeader('host'); //返回值是array
    $host = $request->getHeaderLine("host");//返回值是字符串
获取 get 数据
    $data = $request->query();
    $some = $request->query('key', 'default value')
    //推荐使用get
    $data = $request->get();
    $some = $request->get('key','default value');
获取 post 数据
    $data = $request->post();
    $some = $request->post('key', 'default value')
获取 get & post 数据
    $data = $request->input();
    $some = $request->input('key', 'default value')
获取上传文件
    $file = $request->getUploadedFiles();//获取的结果是一维数组或者二位数组
    //数组内容是 Swoft\Http\Message\Upload\UploadedFile 文件对象,对象,对象
    /**
    *  文件操作方法
    *  moveTo() 将上传的文件移动到新位置。
    *  getSize() 获取文件大小,单位 byte。
    *  getError() 获取上传文件相关的错误信息,若无错将必须返回UPLOAD_ERR_OK 常量,若又错误将返回UPLOAD_ERR_XXX 相关常量。
    *  getClientFilename() 获取文件上传时客户端本地的文件名,不要相信此方法返回的值。
    *  getClientMediaType() 获取客户端中文件的 MediaType 类型,不要相信此方法返回的值。
    */
其它一些方法

其他方法请查看源码或者官方文档

if ($request->isAjax()) {
// Do something
}
if ($request->isGet()) {
// Do something
}
$contentType = $request->getContentType();
本作品采用《CC 协议》,转载必须注明作者和本文链接
今年不学习,明天惨唧唧。
zs4336
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!