在写接口API返回错误码时,我们以前可能这样做:
$ret = [
'code'=>100,
'msg'=>'用户名错误',
'data'=>[],
];
echojson_encode($ret);
$ret = [
'code'=>101,
'msg'=>'密码错误',
'data'=>[],
];
echojson_encode($ret);
$ret = [
'code'=>1011,
'msg'=>'参数错误',
'data'=>[],
];
echojson_encode($ret);写着写着,你可能经常忘记了错误码从哪里开始了... 🤦🏼♂️
用了这个扩展后,我们可以这样:
return [
['errDefine' => 'ERROR_SHOP_NAME', 'index' => 1000, 'errMsg' => '商城名称错误'],
['errDefine' => 'ERROR_SHOP_NAME1','errMsg' => '商城名称错误1'],
['errDefine' => 'ERROR_ORDER_ERROR', 'index' => 2000, 'errMsg' => '商城登录错误'],
];比如错误码1000到1999是商城错误,定义好1000,第二个错误无需定义错误码,即可自增 👏
- 无需手动定义懵逼的错误码数字
- 定义好错误码初始值即可自动递增
- 不用在纠结错误码放在哪
- PHP >= 5.4
- composer
composer require "chomyeong/errorcode""v1.0.0"基本使用:
在vendor同级目录新建errors目录,新增code.php,格式如下:
return [
['errDefine' => 'ERROR_SHOP_NAME', 'index' => 1000, 'errMsg' => '商城名称错误'],
['errDefine' => 'ERROR_SHOP_LOGIN', 'index' => 2000, 'errMsg' => '商城登录错误'],
];引入扩展包:
usechomyeong\errorcode\Error;
$err = newError();响应错误:
$err->responseError(ERROR_PARAM);返回格式:
{"err": 1,"errMsg": "参数错误!","data": {},"isError": true}响应成功:
// 要返回的数据$data = [
'info' => [
'id' => 1,
'username' => 'chomyeong',
],
];
$err->responseSuccess($data);返回格式:
{"err": 0,"errMsg": "","data": {"info": {"id": 1,"username": "chomyeong"}},"isError": false}修改响应格式:
$options = [
'dataBody'=>'info',
'errBody'=>'code',
'isErrorBody'=>'error',
'errMsgBody'=>'message',
];
$err = newError($options);返回格式:
{
"code": 0,
"message": "",
"info": {
"info": {
"id": 1,
"name": "chomyeong"
}
},
"error": false
}参数说明:
dataBody:响应数据体
errBody:错误码
isErrorBody:错误标记
errMsgBody:消息文本
比如只想修改错误码:
$options = [
'errBody'=>'code',
];
$err = newError($options);返回格式:
{
"code": 0,
"errMsg": "",
"data": {
"info": {
"id": 1,
"name": "chomyeong"
}
},
"isError": false
}默认错误码:
ERROR_PARAM 参数错误
ERROR_SYSTEM 系统错误
ERROR_SESSION_ERROR 会话不存在
ERROR_SESSION_PRIVILEGE_ERROR 权限不正确
ERROR_MODIFY_INFO_FAILED 修改数据失败
ERROR_ACCOUNT_LOGIN_FAILED 账号名或密码错误
ERROR_ACCOUNT_RELOGIN_FAILED_WRONG_TOKEN 重登录失败:令牌错误
ERROR_ACCOUNT_RELOGIN_FAILED_TOKEN_TIMEOUT 重登录失败:令牌已超时
ERROR_ACCOUNT_PASSPORT_EXISTS 账号已存在
MIT