48 Star 493 Fork 118

modstart / ModStartCMS

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
BizException.php 3.79 KB
一键复制 编辑 原始数据 按行查看 历史
modstart 提交于 2024-02-10 21:53 . 新增:升级UEditorPlus到v3.8.0
<?php
namespace ModStart\Core\Exception;
class BizException extends \Exception
{
public $param = [];
/**
* 抛出业务异常,系统会统一处理
* @param $msg string 异常信息
* @param $param array 异常参数
* @throws BizException
* @example
* // 抛出异常消息
* BizException::throws( '参数错误' );
* // 使用自定义模板
* BizException::throws( '参数错误', ['view' => 'theme.default.customView','viewData'=>[ 'foo'=>'bar' ]] );
* // 使用自定义状态码,返回 404
* BizException::throws( '参数错误', ['statusCode' => 404]);
*/
public static function throws($msg, $param = [])
{
$e = new BizException($msg);
$e->param = $param;
throw $e;
}
/**
* 条件抛出业务异常,参数参考 throws 方法
* @param $msg string 异常信息
* @param $condition bool 条件
* @param $param array 异常参数
* @throws BizException
*/
public static function throwsIf($msg, $condition, $param = [])
{
if ($condition) {
$e = new BizException($msg);
$e->param = $param;
throw $e;
}
}
/**
* 如果 object 为空,抛出业务异常,参数参考 throws 方法
* @param $msg string 异常信息
* @param $object mixed 对象
* @param $param array
* @throws BizException
*/
public static function throwsIfEmpty($msg, $object, $param = [])
{
if (empty($object)) {
$e = new BizException($msg);
$e->param = $param;
throw $e;
}
}
/**
* 如果 object 不为空,抛出业务异常,参数参考 throws 方法
* @param $msg string 异常信息
* @param $object mixed 对象
* @param $param array
* @throws BizException
*/
public static function throwsIfNotEmpty($msg, $object, $param = [])
{
if (!empty($object)) {
$e = new BizException($msg);
$e->param = $param;
throw $e;
}
}
/**
* 如果 response 有错误,抛出业务异常,参数参考 throws 方法
* @param $response array 标准响应 ['code'=>0,'msg'=>'','data'=>[]]
* @param $prefix string 异常信息前缀
* @param $param array 异常参数
* @throws BizException
*/
public static function throwsIfResponseError($response, $prefix = '', $param = [])
{
if ($prefix) {
$prefix = $prefix . ':';
}
if (empty($response)) {
$e = new BizException($prefix . 'Response Empty');
$e->param = $param;
throw $e;
}
if ($response['code']) {
$e = new BizException($prefix . $response['msg']);
$e->param = $param;
throw $e;
}
}
/**
* 如果 $e 与 $messagePatterns 匹配,抛出业务异常
* @param $error \Exception|string 异常或错误
* @param $messagePatterns array 异常信息模板 ['pattern'=>'message']
* @param $messagePrefix string 异常信息前缀
* @param $isRegex bool 是否正则匹配
* @throws BizException
*/
public static function throwsIfMessageMatch($error, $messagePatterns, $messagePrefix = '', $isRegex = false)
{
if ($error instanceof \Exception) {
$error = $error->getMessage();
}
foreach ($messagePatterns as $pattern => $message) {
if ($isRegex) {
if (preg_match($pattern, $error)) {
BizException::throws($messagePrefix . $message);
}
} else {
if (strpos($error, $pattern) !== false) {
BizException::throws($messagePrefix . $message);
}
}
}
}
}
PHP
1
https://gitee.com/modstart/ModStartCMS.git
git@gitee.com:modstart/ModStartCMS.git
modstart
ModStartCMS
ModStartCMS
master

搜索帮助