php 给接口返回数据

/**

 * 输出错误信息
 * @param int $code
 * @param $msg
 * @throws BaseException
 */
protected function throwError($msg, $code = 0)
{
    throw new BaseException(['code' => $code, 'msg' => $msg]);
}
/**
 * 返回封装后的 API 数据到客户端
 * @param int $code
 * @param string $msg
 * @param array $data
 * @return array
 */
protected function renderJson($code = self::JSON_SUCCESS_STATUS, $msg = '', $data = [])
{
    return compact('code', 'msg', 'url', 'data');
}
/**
 * 返回操作成功json
 * @param string $msg
 * @param array $data
 * @return array
 */
protected function renderSuccess($data = [], $msg = 'success')
{
    return $this->renderJson(self::JSON_SUCCESS_STATUS, $msg, $data);
}
/**
 * 返回操作失败json
 * @param string $msg
 * @param array $data
 * @return array
 */
protected function renderError($msg = 'error', $data = [])
{
    return $this->renderJson(self::JSON_ERROR_STATUS, $msg, $data);
}

class BaseException extends Exception {
public $code = 400;
public $msg = 'invalid parameters';
public $errorCode = 500;

/**
 * 构造函数,接收一个关联数组
 * @param array $params 关联数组只应包含code、msg和errorCode,且不应该是空值
 */
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'];
    }
}

}

我想知道什么实用用异常类 我感觉都可以用 rendersuccess 返回数据吧 因为数据结构都一样的

阅读 3.6k
3 个回答

可以像你说的那样。

但从语义的角度讲,明明是出错了,咋还能 success 呢?

另外,可以拦截异常,单独做日志。

数据和预期的不一样时候就可以抛出异常,异常可以返回错误信息,也可以记录日志,也可以什么都不做。
看上面的代码就是预先定义可能的发生异常,然后遇到错误直接抛出对应的异常

在你觉得可能会出错的地方加异常

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题