请求对象
请求对象调用
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 协议》,转载必须注明作者和本文链接
趁还没掉光,赶紧给每根头发起个名字吧~