为了账号安全,请及时绑定邮箱和手机立即绑定

TP模型中是返回还是抛出异常

TP模型中是返回还是抛出异常

PHP
摇曳的蔷薇 2019-03-16 23:00:19
自己写的在模型中返回一个数组由控制器根据参数响应给视图,代码如下 1:浏览器post请求控制器;2:控制器实例化用户模型3:模型中接受到全部的数据存入$Data变量4:利用验证器验证数据合法性,如果验证不通过返回status为:0;并且返回msg:错误信息5:模型总save新增数据6:新增成功返回1:提示新增成功 新增失败返回0:表示新增失败: 控制器代码: //roue:member/index/userAdd public function userAdd(){ $Result = (实例化会员模型)->add(); //中间可能还有其他操作 return ajaxReturn($Result['status'],$Result['msg']); } 模型代码 public function add(){ $Data = input(''); $Validate= new UserAddValidate($Data); if(false === $Result){ //如果严重失败会返回false //返回状态0,内容为:msg return ['status',=>0,'msg'=>$Validate->getError()]; } //执行新增 $res = $this->save($Data); if($res){ return ['status'=>1,'msg'=>'添加会员成功']; }else{ return ['status'=>0,'msg'=>'添加会员失败']; } } 这个是自己琢磨的 但是感觉好麻烦,每次都要各种的if判断所以我就去看别人的代码,看到一个大神些的利用的是tp5的自定义异常处理类,代码写法如下 控制器代码: //roue:member/index/userAdd public function userAdd(){ return (实例化会员模型)->add(); } 模型代码 public function add(){ $Data = input(''); $Validate= new UserAddValidate($Data); if(false === $Result){ throw new HttpException([ 'status' => 0, 'msg' => $Validate->getError(); ]); } $res = $this->save($Data); if($res){ throw new HttpException([ 'status' => 1, 'msg'= > '添加会员成功', ]); }else{ throw new HttpException([ 'status' => 0, 'msg'= > '添加会员失败', ]); } } HttpException 是TP5里面可以自定义的一个异常处理类 最终结果就是抛出异常,异常中的内容是json后的结果,感觉这种相对来说很好用,但是不知道为什么大多数人的代码都没用用这种呢?或者还有什么更好的办法吗? 以上代码全是在浏览器中手写的,可能会有一点点的误差!
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

自己封装个返回数据的方法

查看完整回答
反对 回复 2019-03-18
?
莫回无

TA贡献1865条经验 获得超7个赞

自己写个异常类继承框架封装的异常类
https://img1.sycdn.imooc.com//5c8f45cf0001958308000643.jpg
他一般都会有后置手段去处理,比如我用的laravel
https://img1.sycdn.imooc.com//5c8f45d100016e9508000521.jpg
他继承了ValidationException,所以会触发
根据自己的逻辑是跳转还是ajax返回,是弹窗还是什么的
还有,变量通常情况下好像没有首字母大写这种写法吧?

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 1259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信