dkou/error-code-enum

使用注释优雅地处理错误码,错误信息的枚举类

1.2.0 2022-02-07 03:18 UTC

This package is not auto-updated.

Last update: 2025-06-09 19:14:15 UTC


README

使用注释优雅地维护错误码,错误信息的枚举类。

背景

枚举类型在开发过程中有广泛应用,本人之前整理一个枚举类,主要应用场景是表示字段状态的枚举,比如:一个活动状态,订单状态等。 在接口开发中,状态码和错误信息的维护往往是一项头痛的事情,过去我们团队是另外文本记录所有错误信息的字典,程序员开发时,要对照着字典一个个找,这显然效率非常低的。 其实,使用枚举类也能优雅地对错误码,错误信息进行优雅地维护管理。参考hyperf框架的hyperf/constants,整理一个专门用于管理错误码,错误信息的枚举类。

好处

  • 代码层限制变量的取值范围,提高代码维护性。每一个状态码相当于一个类的常量,不同的程序员重复或者误定义错误码。
    // 定义一个用户权限相关的错误码枚举类
    class UserAuthCode extends ErrorCode{
      /***     
      * @Message("登录超时")     
      */
      const TIME_OUT = 20001;
      /***     
      * @Message("登录密码错误")     
      */
      const PWD_ERROR = 20002;
      /***     
      * @Message("账号%s不存在")     
      */
      const USERNAME_NOT_EXIST = 20001;
    }
    
  • 对IDE(测试使用phpstorm)友好,不需要额外的文本记录错误码字典,提高开发效率。

输入图片说明

安装

composer install dkou/error-code-enum

定义

直接继承,根据不同业务定义不同的错误码枚举类以下为使用例子:

// 定义一个用户权限相关的错误码枚举类
class UserAuthCode extends ErrorCode{
    /***     
    * @Message("登录超时")     
    */
    const TIME_OUT = 20001;
    /***     
    * @Message("登录密码错误")     
    */
    const PWD_ERROR = 20002;
    /***     
    * @Message("账号%s不存在")     
    */
    const USERNAME_NOT_EXIST = 20001;
}

状态码

  • 命名只能是大写英文字母+下划线组合。

    错误信息

  • 注释格式必须与案例一致.其中Message必须M大写,错误信息必须使用双引号包裹。
  • %s为占位符。

使用

获取错误码

UserAuthCode::TIME_OUT;

获取错误码的错误信息

// 直接获取
UserAuthCode::getMessage(UserAuthCode::TIME_OUT);
// 错误信息带占位符时,可加入上下文信息
UserAuthCode::getMessage(UserAuthCode::USERNAME_NOT_EXIST,['xxxxx']);

常用的接口返回格式返回

一般是接口返回结果的格式,都是一个数组里面包含code,message,data。

// 直接获取
UserAuthCode::compser(UserAuthCode::TIME_OUT);
// 拼接上下文data数据
$data = [];
UserAuthCode::getMessage(UserAuthCode::USERNAME_NOT_EXIST, ['xxxxx'], $data);