• Laravel之加密解密/日志/异常处理及自定义错误


    一.加密解密

    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 IlluminateHttpRequest $request
    * @param Exception $e
    * @return IlluminateHttpResponse
    */
    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 状态码相匹配。

  • 相关阅读:
    Note/Solution 转置原理 & 多点求值
    Note/Solution 「洛谷 P5158」「模板」多项式快速插值
    Solution 「CTS 2019」「洛谷 P5404」氪金手游
    Solution 「CEOI 2017」「洛谷 P4654」Mousetrap
    Solution Set Border Theory
    Solution Set Stirling 数相关杂题
    Solution 「CEOI 2006」「洛谷 P5974」ANTENNA
    Solution 「ZJOI 2013」「洛谷 P3337」防守战线
    Solution 「CF 923E」Perpetual Subtraction
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6930484.html
Copyright © 2020-2023  润新知