八、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; }
返回值樣式: