1. 程式人生 > >Laravel之加密解密/日誌/異常處理及自定義錯誤

Laravel之加密解密/日誌/異常處理及自定義錯誤

文件中 例如 tom 處理器 crypt return cat 情況 而不是

一.加密解密

1.加密
Crypt::encrypt($request->secret)

2.解密
try {
  $decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
  //
}

二.日誌


1.配置文件config/app.php 中的debug 配置選項控制瀏覽器顯示的錯誤詳情數量。默認情況下,該配置選項被設置在.env 文件中的環境變量APP_DEBUG 。對本地開發而言,你應該設置環境變量APP_DEBUG 值為true 。在生產環境,該值應該被設置為false 。

2.日誌模式
Laravel 支持日誌方法single , daily , syslog 和errorlog 。例如,如果你想要日誌文件按日生成而不是生成單個文件,應該在配置文件config/app.php 中設置log 值如下:
‘log‘ => ‘daily‘

三.異常處理/自定義錯誤頁面


1.異常處理器在App/Exceptions/Handler.php

2.report 方法
report 方法用於記錄異常並將其發送給外部服務如Bugsnag 。默認情況下, report 方法只是將異常傳遞給異常被記錄的基類,你可以隨心所欲的記錄異常。
例如,如果你需要以不同方式報告不同類型的異常,可使用PHP 的instanceof 比較操作符:

/**
* 報告或記錄異常
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $e
* @return void
*/
public function report(Exception $e){
  if ($e instanceof CustomException) {
    //
  }
  return parent::report($e);
}

  

異常處理器的$dontReport 屬性包含一個不會被記錄的異常類型數組,默認情況下,404 錯誤異常不會被寫到日誌文件,如果需要的話你可以添加其他異常類型到這個數組。

3.render方法
render 方法負責將給定異常轉化為發送給瀏覽器的HTTP 響應,默認情況下,異常被傳遞給為你生成響應的基類。然而,你可以隨心所欲地檢查異常類型或者返回自定義響應:

/**
* 將異常渲染到 HTTP 響應中
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e){
	if ($e instanceof CustomException) {
		return response()->view(‘errors.custom‘, [], 500);
	}
	// 自定義一個token錯誤的異常
	if ($e instanceof TokenMismatchException) {
            return back()->withErrors(‘token錯誤,請重新提交‘);
        }
	return parent::render($request, $e);
}

  

4.應用中生成異常
abort(404);
abort(403, ‘Unauthorized action.‘);

5.自定義 HTTP 錯誤頁面
Laravel 使得返回多種HTTP 狀態碼的錯誤頁面變得簡單,例如,如果你想要自定義 404 錯誤頁面,創建一個
resources/views/errors/404.blade.php 文件,給文件將會渲染程序生成的所有 404 錯誤。 改目錄下的視圖命名應該和相應的 HTTP 狀態碼相匹配。

Laravel之加密解密/日誌/異常處理及自定義錯誤