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; }
返回值样式: