### **安裝TP6**
~~~
composer create-project topthink/think tp && cd tp
~~~
開啟TP6多應用模式
~~~
composer require topthink/think-multi-app
~~~
安裝thinkphp模板引擎
~~~
composer require topthink/think-view
~~~
安裝驗證碼擴展
~~~
composer require topthink/think-captcha
~~~
### **自定義全局異常處理類**
在\\extend目錄下新建擴展exception,自定義ExceptionHandler繼承TP的think\\exception\\Handle類,在ExceptionHandler類中重寫render方法
~~~
public function render($request, Throwable $e): Response {
if ($e instanceof BaseException) {
// 自定義異常走的邏輯
$this->code = $e->getCode();
$this->message = $e->getMessage();
$this->errorCode = $e->getErrorCode();
} else {
// 服務器異常邏輯,不需要將具體錯誤信息展示給用戶
$this -> code = 500;
$this -> message = '服務器內部錯誤';
$this -> errorCode = 999;
// 此處要記錄日志,留待之后添加
}
$result = [
'message' => $this->message,
'errorCode' => $this->errorCode,
'request_url' => Request::url(),
];
return json($result, $this->code);
}
~~~
使自定義全局異常生效:
app目錄下的provider.php中定義容器:
~~~
'think\exception\Handle' => \exception\ExceptionHandler::class,
~~~
定義BaseException繼承think\\Exception,定義存儲錯誤信息的成員變量
~~~
// HTTP 狀態碼
protected $code = 400;
// 錯誤具體信息
protected $message = '參數錯誤';
// 自定義錯誤碼
protected $errorCode = 10000;
~~~
重寫\_\_construct()方法,讓自定義異常處理類接收一個數組參數
~~~
public function __construct($params = []) {
if (!is_array($params)){
throw new Exception('參數必須是數組');
}
if (array_key_exists('code',$params)){
$this -> code = $params['code'];
}
if (array_key_exists('message',$params)){
$this -> message = $params['message'];
}
if (array_key_exists('errorCode',$params)){
$this -> errorCode = $params['errorCode'];
}
}
~~~
### **構建驗證層**
在validate目錄下定義BaseValidate繼承think\\Validate,實現gocheck方法
~~~
public function goCheck(){
$params = Request::param();
$result = $this -> check($params);
if (!$result){
throw new \exception\ParamsException([
'message'=> $this -> error,
'code' => 400
]);
}else{
return true;
}
}
~~~
其他的validate文件繼承BaseValidate,如LoginCheck繼承BaseValidate
在控制器里就可以通過?(newLoginCheck()) ->goCheck();?實現參數校驗
校驗不通過則拋出自定義異常
- 空白目錄
- 使用thinkphp6搭建后端api接口流程
- tp6 uniapp vue 前后端跨域解決方案
- 操作記錄
- api00
- 你看看有沒有用
- 6666
- Docker安裝LNMP環境的詳細過程(可部署TP項目)
- LNMP部署thinkphp
- 玩客云Armbian 安裝LNMP環境 Docker
- ThinkPHP6項目基操(16.實戰部分 redis+token登錄)
- ThinkPHP6項目基操(11.實戰部分 部署后臺靜態頁面模板及后臺登錄頁面)
- ThinkPHP6項目基操(13.實戰部分 項目中的自定義異常處理總結 錯誤頁面API錯誤)
- ThinkPHP6項目基操(14.實戰部分 中間件處理登錄流程)
- ThinkPHP6項目基操(12.實戰部分 驗證碼)
- ThinkPHP6項目基操(18.實戰部分 表單令牌Token 防CSRF)
- ThinkPHP6項目基操(19.實戰部分 Mysql模型事務操作)
- ThinkPHP6項目基操(20.實戰部分 數據庫操作返回值總結)
- 瀏覽器端判斷當前設備的運行環境
- api
- api異常捕捉
- 寫一個中間件
- 統一的參數返回形式
- ThinkPHP6調用模型的方法
- thinkphp6控制器、驗證器、模型、service,各層寫的內容