tp5.1项目开始的优化和配置(全局异常)

tp5.1项目开始的优化和配-置(全局异常)

前言

首先开始一个项目的时候,我觉得还是首先应该构思整个项目,把整个局给布好,这样项目开始的时候,甚至项目迭代和更新维护起来更加的得心印手。
那么用tp5来作为后端API目标,首先得让整个项目正常的运行起来,有一个基本的验证层机制,和一个异常处理机制,甚至还可以加上一个数据返回处理机制,这样的话API接口的维护就显得有模有样了。

开启debug

这个对于我们开发者来说十分的关键,如果是生产模式下,就可以关闭,打开这个可以给我们详细的报错提醒,又便于我们查找错误,不过刚开始的时候这个是关闭的,需要我们自己去打开

在这里插入图片描述

配置数据库

这又是一个十分关键的点,我们要连接到我们的数据库,就要在这个配置文件中把相应的配置填写好

在这里插入图片描述

还有一个数据库的小配置,把这个配置好了,可以对数据库中时间戳字段实现字段写入(像我开发的时候就会经常用到)

在这里插入图片描述

全局异常处理

如果要使用自定义的全局异常处理机制,需要在配置文件app.php的最下面的一行中添加你的自定义异常处理类

在这里插入图片描述

// 异常处理handle类 留空使用 \think\exception\Handle
    'exception_handle'       => '\app\lib\exception\ExceptionHandler',

两个文件

在这里插入图片描述

我把代码贴一下

BaseException.php

<?php
namespace app\lib\exception;
use Exception;

class BaseException extends Exception
{
    public $code = 400;
    public $msg = '异常';
    public $errorCode = 20000;

    public function __construct($params = []){
        if (!is_array($params)) return;
        if (array_key_exists('code',$params))  $this->code = $params['code'];
        if (array_key_exists('msg',$params))  $this->msg = $params['msg'];
        if (array_key_exists('errorCode',$params))  $this->errorCode = $params['errorCode'];
    }
}

ExceptionHandler.php

<?php
namespace app\lib\exception;

use Exception;
use think\exception\Handle;

class ExceptionHandler extends Handle
{
    public $code;
    public $msg;
    public $errorCode;

    /**
     * 重写render方法
     * @param Exception $e
     * @return \think\Response|\think\response\Json
     */
    public function render(Exception $e){
        if ($e instanceof BaseException) {
            $this ->code = $e->code;
            $this ->msg = $e->msg;
            $this ->errorCode = $e->errorCode;
        }else{
            // debug开启,显示默认的异常
            if (config('app.app_debug')) return parent::render($e);
            $this ->code = 500;
            $this ->msg = '服务器异常';
            $this ->errorCode = '10000';
        }
        $res = [
            'msg'=>$this->msg,
            'errorCode'=>$this->errorCode
        ];
        return json($res,$this->code);
    }
}

这两个文件封装好了之后,就可以在我们的项目中进行调用le,例如

//抛出异常
        throw new BaseException(['code'=>400,'msg'=>'签到失败','errorCode'=>30005]);

使用命令创建控制器

在这里插入图片描述

这是一个小技巧,可以进行快速的创建项目文件·

封装验证层

创建一个基类验证器,BaseValidate.php,继承validate,在其他的控制器里面就继承BaseValidate就可以了,在基类里面添加以下的代码

public function goCheck($scene = false){
     // 获取请求传递过来的所有参数
     $params = request()->param();
     // 开始验证
     $check = $scene ?
        $this->scene($scene)->check($params):
        $this->check($params);
     if (!$check) {
      throw new BaseException(['msg'=>$this->getError(),'errorCode'=>10000,'code'=>400]);
     }
     return true;
  }

使用

 // 验证参数
    (new UserValidate())->goCheck('sendCode');

另外在tp5.1的框架中,有详细的文档说明,这里贴一下链接

https://www.kancloud.cn/manual/thinkphp5_1/354102

感谢ThinkPHP!

发布了50 篇原创文章 · 获赞 64 · 访问量 4301

猜你喜欢

转载自blog.csdn.net/qq_45163122/article/details/104189594