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

