在正常情况,我们会通过,if,else进行判断一个接口的条件是否满足,不满足则输出错误,例如
在IM系统中,申请入群接口,需要以下判断:
$param = $this->request()->getRequestParam... return true;
}
可以看出,这里面有着非常多的if else,return,writeJson等重复代码.那么,有没有一个办法,进行if,else等封装,直接一行代码实现 判断+输出错误呢...$userInfo,'你已经是本群成员');
在此时,我们已经将我们的判断代码,优化成了一行,在assert函数中,会将不符合预期的数据,通过异常抛出,我们需要通过拦截异常,来实现输出前端需要的数据格式...$userInfo,'你已经是本群成员');
}catch (\Throwable $throwable){
//拦截抛出的异常,然后直接输出json 错误消息
$this->writeJson...相关较为完善的代码已开源:
https://github.com/tioncico/LogicAssert 仅供参考
其他
需要注意的是,断言的意思为: 断定条件为真,使代码继续往下执行,断言抛出异常为,条件错误才抛出