• 售前

  • 售后

热门帖子
入门百科

thinkphp5.1 中利用自定义异常处理处罚类举行接受

[复制链接]
我爱萨其马虞co 显示全部楼层 发表于 2021-8-14 14:30:16 |阅读模式 打印 上一主题 下一主题
配置文件修改

config/app.php
自定义非常接受类出处
'exception_handle' => ‘\app\common\exception\ExceptionHandle',
自定义处理惩罚非常方法
寡人的存放目次为 app/common/exception
ApiException.php
  1. namespace app\common\exception;
  2. use Exception;
  3. class ApiException extends Exception
  4. {       
  5.         /**
  6.          * 构造函数
  7.          */
  8.         public function __construct(array $ApiErrConst, Throwable $previous = null)
  9.         {
  10.                 $code = $ApiErrConst[0];
  11.                 $message = $ApiErrConst[1];       
  12.                 parent::__construct($message, $code, $previous);
  13.         }
  14. }
复制代码
ExceptionHandle.php
  1. namespace app\common\exception;
  2. use Exception;
  3. use think\exception\Handle;
  4. use app\common\exception\ApiException;
  5. use app\common\err\ApiErrCode;
  6. class ExceptionHandle extends Handle
  7. {
  8.         // 引入复用模块:JSON返回格式
  9.         use \app\common\traits\ResponseJson;
  10.         public function render(Exception $e)
  11.         {               
  12.                 if($e instanceof ApiException) {
  13.                         $code = $e->getCode();
  14.                         $message = $e->getMessage();       
  15.                 }else{
  16.                         $code = $e->getCode();
  17.                         if(!$code || $code < 0) {
  18.                                 $code = ApiErrCode::ERROR_UNKNOW[0];
  19.                         }
  20.                         $message = $e->getMessage() ? $e->getMessage() : ApiErrCode::ERROR_UNKNOW[1];
  21.                 }               
  22.                 echo $this->jsonErrorData($code,$message); //该方法在下方
  23.                 // 其他错误交给系统处理
  24.        // return parent::render($e);
  25.         }
  26. }
复制代码
错误码文件

存放目次:app/common/err
  1. namespace app\common\err;
  2. class ApiErrCode
  3. {
  4.         /**
  5.          * API通用错误码 const 定义常量
  6.          * error_code < 1000
  7.          */       
  8.     const ERROR_UNKNOW = [0, "未知错误"];
  9.     const ERROR_URL = [1, "接口不存在"];
  10.     .......
  11. }
复制代码
复用模块

针对API接口返回格式
存放目次:app/common/traits
  1. namespace app\common\traits;
  2. trait ResponseJson
  3. {
  4.         /**
  5.          * API接口出现业务异常时时返回
  6.          * @author Leo
  7.          */
  8.         public function jsonErrorData($code,$message,$data = [])
  9.         {
  10.                 return $this->jsonResponse($code, $message, $data);
  11.         }
  12.         /**
  13.          * API接口请求成功时返回
  14.          * @author Leo
  15.          */
  16.         public function jsonSuccessData($data = [])
  17.         {
  18.                 return $this->jsonResponse(200, "Sucess", $data);
  19.         }
  20.         /**
  21.          * 返回一个JSON
  22.          * @author Leo
  23.          */
  24.         private function jsonResponse($code,$message,$data)
  25.         {
  26.                 $content = [
  27.                         'code' => $code,
  28.                         'msg' => $message,
  29.                         'data' => $data
  30.                 ];
  31.                 return json_encode($content);
  32.         }
  33. }
复制代码
页面调用
  1. // 文件头部引入
  2. use app\common\exception\ApiException;
  3. use app\common\err\ApiErrCode;
  4. // 引入复用模块:JSON返回格式
  5. use \app\common\traits\ResponseJson;
  6. // 示例
  7. public function index() {
  8.         throw new ApiException(ApiErrCode::ERROR_URL);                // 自定义异常抛出
  9. }
复制代码
到此这篇关于thinkphp5.1 中使用自定义非常处理惩罚类举行接受的文章就先容到这了,更多相关thinkphp5.1 自定义非常处理惩罚类内容请搜刮脚本之家从前的文章或继续浏览下面的相关文章渴望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作