这几天在研究tp5.1的使用方法,发现tp和laravel比确实不够优雅,但是大多数方法的使用还是一样的,我最近在用jwt来写一下接口的验证,但是用模型查出来的数据直接进行返回有点杂乱无章,于是我自己研究了一下,发现tp的控制器都是继承于controller的,我仿造了laravel的写法,在tp的父类控制器里写了个这个方法,代码如下:
public function success($data = null)
{
return ['error_code' => 0, 'data' => $data];
}
发现并不行,请求的时候不但没有达到我想要的格式,还给我报了错,我心想,肯定是tp不支持这种写法,发现tp封装有自带的success方法,是用来跳转或者重定向的,我转换了一下思路,想想还是自己封装一个吧,刚开始直接封装了一个方法,把返回的数据直接放到数组格式中,还是报错,错误的代码如下:
public function msg($data = null)
{
return ['error_code' => 200, 'data' => $data];
}
然后我仔细研究了一下tp的底层,是必须需要把数据转换为json,才能达到我想要的格式,于是又做了一些修改,最终代码如下:
public function msg($code,$data){
//判断状态码
switch ($code) {
case 200:
$msgStr = 'success';
break;
case 500:
$msgStr = 'error';
break;
}
//将返回的数据放到数组中去
$data = ['code'=> $msgStr,'data'=> $data];
//转换为json
return json($data);
}
这样,我们在每次return的时候,只需要将数据和状态码传到我们方法中去,就可以获取到我们返回的正确格式了,便于前端去判断该数据是否正确。用法代码如下:
class Order extends Controller
{
/**
* @return Json
*/
public function index()
{
//定义一个数组
$arr = [
'name' => 'liang',
'sex' =>1
];
//将数组和状态码返回到msg方法中
return $this->msg(200, $arr);
}
注意,我们把方法写到父类controller控制器里面,这样我们每次只需要要继承于父类控制器,就可以获取到当前的公共方法,今天就简单的说一下这个格式,近期由于在找工作,没时间更新文章,工作已在本周三定下来了,后面会补上walle自动化部署的文章和数据库误删还原数据的文章,若是有空会写一篇tp如何使用jwt来做接口的验证文章,欢迎大家关注,我还是原来的犯二青年,一个编程的爱好者,路程很艰辛,希望大家一路坚持下去!!!
© 著作权归作者所有
文章评论(0)