ThinkPHP 请求与响应

请求对象

请求对象调用

1、控制器构造方法注入
2、控制器操作方法注入(无论是否继承系统的控制器基类,都可以使用操作方法注入)
3、Facade调用
4、助手函数request

请求信息

Request对象支持获取当前的请求信息,包括:

方法 含义
host 当前访问域名或者IP
scheme 当前访问协议
port 当前访问的端口
remotePort 当前请求的REMOTE_PORT
protocol 当前请求的SERVER_PROTOCOL
contentType 当前请求的CONTENT_TYPE
domain 当前包含协议的域名
subDomain 当前访问的子域名
panDomain 当前访问的泛域名
rootDomain 当前访问的根域名(V5.1.6+)
url 当前完整URL
baseUrl 当前URL(不含QUERY_STRING)
query 当前请求的QUERY_STRING参数
baseFile 当前执行的文件
root URL访问根地址
rootUrl URL访问根目录
pathinfo 当前请求URL的pathinfo信息(含URL后缀)
path 请求URL的pathinfo信息(不含URL后缀)
ext 当前URL的访问后缀
time 获取当前请求的时间
type 当前请求的资源类型
method 当前请求类型

输入变量

  • 检测变量是否设置

    $request->has('id','post');
  • 变量获取

变量获取的格式:变量类型方法('变量名/变量修饰符','默认值','过滤方法')
最常用的获取变量类型方法如下:

方法 描述
param 获取当前请求的变量
get 获取 $_GET 变量
post 获取 $_POST 变量

param方法会把当前请求类型的参数和路由变量以及GET请求合并,并且路由变量是优先的

获取请求类型

在很多情况下面,我们需要判断当前操作的请求类型是GET、POST、PUT、DELETE或者HEAD,一方面可以针对请求类型作出不同的逻辑处理,另外一方面有些情况下面需要验证安全性,过滤不安全的请求

用途 方法
获取当前请求类型 method
判断是否GET请求 isGet
判断是否POST请求 isPost
判断是否PUT请求 isPut
判断是否DELETE请求 isDelete
判断是否AJAX请求 isAjax
判断是否PJAX请求 isPjax
判断是否为JSON请求 isJson(V5.1.38+)
判断是否手机访问 isMobile
判断是否HEAD请求 isHead
判断是否PATCH请求 isPatch
判断是否OPTIONS请求 isOptions
判断是否为CLI执行 isCli
判断是否为CGI模式 isCgi

HTTP头信息

$header = $request->header();
$agent = $request->header('user-agent');

伪静态

URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置url_html_suffix参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行

'url_html_suffix' => 'shtml'
'url_html_suffix' => '' //支持所有的静态后缀访问
'url_html_suffix' => 'html|shtml|xml' // 多个伪静态后缀设置 用|分割
'url_html_suffix' => false,// 关闭伪静态后缀访问

如果要获取当前的伪静态后缀,可以使用Request对象的ext方法。

$ext = $request->ext();

响应

大多数情况,我们不需要关注Response对象本身,只需要在控制器的操作方法中返回数据即可
如果修改配置文件,设置:'default_return_type' => 'json'则访问的输出结果就变成了JSON字符串

  • 响应输出类型
    为了规范和清晰起见,最佳的方式是在控制器最后明确输出类型(毕竟一个确定的请求是有明确的响应输出类型),默认支持的输出类型包括:
输出类型 快捷方法 对应Response类
HTML输出 response \think\Response
渲染模板输出 view \think\response\View
JSON输出 json \think\response\Json
JSONP输出 jsonp \think\response\Jsonp
XML输出 xml \think\response\Xml
页面重定向 redirect \think\response\Redirect
附件下载(V5.1.21+) download \think\response\Download
  • 响应参数
    1、data设置响应数据
    2、code设置状态码
    3、header设置头信息(支持批量)
    4、options设置额外参数

  • 重定向
    redirect助手函数重定向以及传参:redirect('hello',['name'=>'thinkphp']);

本作品采用《CC 协议》,转载必须注明作者和本文链接
今年不学习,明天惨唧唧。
zs4336
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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