八、ThinkPHP5.0应用强制路由、行为、统一返回值格式php
答:最近喜欢上了laravel的路由模式,发现tp5也有相似的操做。所以就动手作了一些改造,laravel
一、强制路由模式json
'url_route_on' => true,
数组
'url_route_must' => true,
闭包
设置这两个参数即可实现tp强制路由,路由定义方式以下例:
app
//闭包 Route::get('/',function(){ return 'Hello,world!'; }); Route::get('/test','index/Test/test');
二、行为(Hook)url
这个是tp5的一个扩展,我感受能够用来模拟中间件的做用,能够在路由里调用,实现权限验证等spa
具体见tp5手册code
$result = Hook::exec('app\\index\\behavior\\CheckAuth','run',$params);
三、统一返回值格式orm
在作接口开发时,统一返回值格式颇有必要
简单的作法是写一个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; }
返回值样式: