前言
这节讲请求和响应
请求
Request请求对象
现在框架都有依赖注入
在方法中声明参数类型即可
如果继承了app/BaseController.php
可以使用$this->request(这个在构造函数中注入的)
namespace app\admin\controller\base;
use app\BaseController;
use app\Request;
class Home extends BaseController
{
public function index()
{
return captcha('verify');
}
public function test(Request $request)
{
# 等价 true
dd($request === $this->request);
}
}
获取请求参数
可以通过Request->params($name, $default, $filter) 获取参数
$name 参数名(单个参数string,多个参数array格式) 为空则获取所有参数
$default 参数获取不到返回的默认值
$filter 指定参数返回的类型 可以是int,string…,函数名等…
# 获取单个参数
$request->param('name');
# 获取指定多个参数
$request->param(['name', 'age']);
# 获取所有参数
$request->param();
# 获取参数并转换成int
# 还可以是string,boolean...
$request->param('age', '', 'int');
# 获取参数并使用trim过滤
# 还可以是htmlspecialchars,strip_tags...
$request->param('content', '', 'trim');
# 多个过滤连用 以,分割
$request->param('content', '', 'trim,htmlspecialchars');
也可以使用辅助函数input( n a m e , name, name,default, f i l t e r ) 获 取 参 数 用 法 同 R e q u e s t − > p a r a m s ( filter) 获取参数 用法同Request->params( filter)获取参数用法同Request−>params(name, $default, $filter)相同
其是在Request上的封装
# input() 辅助函数可以要求获取指定提交方式提交的数据
# get.content 代表获取get方式提交的content参数
# get.content 换成 content 就等价于 Request->param(content)
input('get.content', '', '');
Request其他常用方法
从请求头中获取信息
# 常用的是从头部获取token
$request->header('Authorization');
判断请求的提交动作
# 判断是post动作
# post可以换成Get,Delete,Put......来判断其他动作
$request->isPost();
判断请求形式
# 判断是否以json的形式请求
# Json可以换成Ajax,Pjax...等来判断对应请求形式
$request->isJson()
响应
响应对象Response创建
# Response::create($data,$type,$code)
# $data 响应内容
# 响应类型 html 时要求$data非array,json时无要求 默认html
# 响应的http状态码 默认200
$response = Response::create("content value", "html", "200");
设置响应header
# header($options)
# options 为array
$response->header(['content-type' => 'text/html']);
辅助函数response
# function response($data = '', $code = 200, $header = [], $type = 'html')
# 是对Response的创建和设置header信息的封装
return response(['name' => 'this is ok'], 200, [], 'json');
辅助函数json
# function json($data = [], $code = 200, $header = [], $options = [])
# 是对创建json 类型 Response的封装
return json(['name' => 'name'], 200, ['content-type' => 'text/json']);