1. 程式人生 > 程式設計 >讓whoops幫我們告別ThinkPHP6的異常頁面

讓whoops幫我們告別ThinkPHP6的異常頁面

春節期間熟悉了TP6, 也寫了一個TP6的部落格程式,但系統的異常頁面實在另外頭疼,很多時候無法檢視到是哪行程式碼出的問題。

所以就特別的想把whoops引進來,經過一系列的研究,終於找到了解決的辦法:

1. 通過composer安裝whoops

執行命令: composer require filp/whoops

注意:composer引進的檔案如果有語法錯誤,需要提前把語法錯誤處理好才能進行安裝,否則一直報錯。

2. 使用whoops接管tp6的異常處理

在/app/ExceptionHandle.php檔案的render()方法中加入如下程式碼:

// 新增自定義異常處理機制
if (ENV('APP_DEBUG')) {
  // 如果是HttpResponseException異常則原樣輸出
  // JUMP外掛裡的success,error和result方法均返回的是HttpResponseException異常
  if ($e instanceof HttpResponseException) {
    return $e->getResponse();
  }

  // Whoops 接管請求異常
  $whoops = new \Whoops\Run;
  $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
  return Response::create(
    $whoops->handleException($e),'html',500
  );
}

如下圖:

讓whoops幫我們告別ThinkPHP6的異常頁面

3. 看看結果吧

我在部落格首頁的index方法中寫入了一個不存在的函式:

讓whoops幫我們告別ThinkPHP6的異常頁面

重新整理頁面一看,妥了

讓whoops幫我們告別ThinkPHP6的異常頁面

OK. 熟悉的whoops又回來了.

4. 後記

為了在thinkphp6中使用whoops,我又認真的看了一遍PHP7中的異常機制,終於是把whoops給引進來了.

在學習異常處理的過程中,我也發現在PHP7中應該使用try()catch()來進行業務處理,而不是再使用if()else()了.

後續我會單獨寫篇文章來講述我在研究PHP7的異常中獲得的經驗.

以上就是讓whoops幫我們告別ThinkPHP6的異常頁面的詳細內容,更多關於whoops替換ThinkPHP6的異常頁的資料請關注我們其它相關文章!