自动生成错误码组件

说明

能够根据给定的规则自动维护错误码的生成。

约定返回数据中 code 参数,所有自定义的 code ,正数代表服务正常,负数代表服务异常。

项目地址

https://github.com/teamones-open/response-code-msg

安装

  1. composer require teamones/response-code-msg

使用

空 ErrorCode 类文件

  • 文件路径 ./support/ErrorCode.php
  1. <?php
  2. /**
  3. * 自动生成的文件 ,请不要手动修改.
  4. * @Author:$Id$
  5. */
  6. namespace support;
  7. class ErrorCode
  8. {
  9. }

配置文件

错误码会自动按照下面配置的参数自增生成,例如当前 system_number = 201,start_min_number = 10000,那么生成的第一个错误码就是 -20110001。

  • 文件路径 ./config/error_code.php
  1. <?php
  2. return [
  3. "class" => new \support\ErrorCode(), // ErrorCode 类文件
  4. "root_path" => app_path(), // 当前代码根目录
  5. "system_number" => 201, // 系统标识
  6. "start_min_number" => 10000 // 错误码生成范围 例如 10000-99999
  7. ];

在start.php中增加启动自动生成错误码代码

  • 文件路径 ./start.php
  1. // 放在 Config::load(config_path(), ['route', 'container']); 后面
  2. // 生成错误码,仅APP_DEBUG模式下生成
  3. if (config("app.debug")) {
  4. $errorCodeConfig = config('error_code');
  5. (new \teamones\responseCodeMsg\Generate($errorCodeConfig))->run();
  6. }

在代码中使用

下面代码中 ErrorCode::ModelAddOptionsError 为错误码, 其中 ModelAddOptionsError 需要用户自己根据当前需求语义化首字母大写去书写。

书写完你会发现是无法使用的,再下次重启后会自动生成对应错误码。注意有时候需要重启两次。

  1. <?php
  2. /**
  3. * 导航相关操作 service 类
  4. */
  5. namespace app\service;
  6. use app\model\Demo as DemoModel;
  7. // 引入ErrorCode类文件
  8. use support\ErrorCode;
  9. class Demo
  10. {
  11. /**
  12. * 添加
  13. * @param $data
  14. * @return array|mixed
  15. * @throws \exception
  16. */
  17. public function add($data): array
  18. {
  19. try {
  20. $demo = new DemoModel();
  21. foreach ($data as $key => $value) {
  22. $demo->$key = $value;
  23. }
  24. $demo->save();
  25. return $demo->getData();
  26. } catch (\Throwable $e) {
  27. // 输出错误信息
  28. throw_http_exception($e->getMessage(), ErrorCode::ModelAddOptionsError);
  29. }
  30. return [];
  31. }
  32. }

生成后的 ./support/ErrorCode.php 文件

  1. <?php
  2. /**
  3. * 自动生成的文件 ,请不要手动修改.
  4. * @Author:$Id$
  5. */
  6. namespace support;
  7. class ErrorCode
  8. {
  9. const LoginNameOrPasswordError = -20110001;
  10. const UserNotExist = -20110002;
  11. const TokenNotExist = -20110003;
  12. const InvalidToken = -20110004;
  13. const ExpireToken = -20110005;
  14. const WrongToken = -20110006;
  15. const ClientIpNotEqual = -20110007;
  16. const TokenRecordNotFound = -20110008;
  17. const ModelAddUserError = -20110009;
  18. const NoInfoToModify = -20110010;
  19. const OnlyAdminPasswordCanBeModified = -20110011;
  20. const AdminAccountCannotBeDeleted = -20110012;
  21. const DbNotExist = -20110013;
  22. const ModelAddOptionsError = -20110014;
  23. const UnableToDeleteSystemConfig = -20110015;
  24. const ConfigParamKeyRequired = -20110016;
  25. const ExpiryCanNotGreaterThan7days = -20110017;
  26. const GetPresignedPutObjectUrlError = -20110018;
  27. const ObjectStorageConfigNotExist = -20110019;
  28. const UpdateNavIndexSortError = -20110020;
  29. const TagNameAttNotExist = -20110021;
  30. const ModelUpdateOptionsError = -20110022;
  31. }