猿问

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

自己写的在模型中返回一个数组由控制器根据参数响应给视图,代码如下

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后的结果,
感觉这种相对来说很好用,但是不知道为什么大多数人的代码都没用用这种呢?
或者还有什么更好的办法吗?

以上代码全是在浏览器中手写的,可能会有一点点的误差!

摇曳的蔷薇
浏览 1261回答 3
3回答

倚天杖

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

莫回无

自己写个异常类继承框架封装的异常类他一般都会有后置手段去处理,比如我用的laravel他继承了ValidationException,所以会触发根据自己的逻辑是跳转还是ajax返回,是弹窗还是什么的还有,变量通常情况下好像没有首字母大写这种写法吧?
随时随地看视频慕课网APP
我要回答