8、ThinkPHP5.0应用强制路由、行为、统一返回值格式
答:最近喜欢上了laravel的路由模式,发现tp5也有类似的操作。因此就动手做了一些改造,
1、强制路由模式
'url_route_on' => true,
'url_route_must' => true,
设置这两个参数便可实现tp强制路由,路由定义方式如下例:
//闭包
Route::get('/',function(){
return 'Hello,world!';
});
Route::get('/test','index/Test/test');
2、行为(Hook)
这个是tp5的一个扩展,我感觉可以用来模拟中间件的作用,可以在路由里调用,实现权限验证等
具体见tp5手册
$result = Hook::exec('app\\index\\behavior\\CheckAuth','run',$params);
3、统一返回值格式
在做接口开发时,统一返回值格式很有必要
简单的做法是写一个Result类,定义一个静态方法实现统一格式
/**
* 统一格式返回
* @param $data
* @param int $errorCode
* @param string $message
* @return array
*/
public static function format($data, int $errorCode=0, $message=''){
return [
'data' => $data,
'errorCode' => $errorCode,
'message' => $message
];
}
默认是不能直接返回数组的,因此还需要对源代码中的Response.php做一下修改
/**
* 处理数据
* @access protected
* @param mixed $data 要处理的数据
* @return mixed
*/
protected function output($data)
{
//为统一数据返回格式,修改返回值格式
if(is_array($data)||is_object($data)){
return json_encode($data);
}else{
return $data;
}
// return $data;
}
返回值样式: