学习使用的是Tp5.1
在看别人代码的时候想很多关于数据库的操作之间写到控制器里面了;
public function save()
{
$data = input('post');
$validate = $this->validate($data,"app\\common\\TestValidate");
$result = (new UserModel)->save($data);
if($result){
return $this->success('操作成功');
}else{
return $this->success('操作失败');
}
}
但是有人说这样就没必要用模型,可以将写入数据的方法写到model里面
但是写在model中在控制器调用的时候如何判断是否写入成功呢?
还有就是将数据验证是应该写在控制器还是模型??
比如用户注册 前端提交->控制器接收请求->模型
这之中的数据验证写到控制器还是模型
如果写到控制器没什么疑问,但是如果写到模型
模型中验证失败返回false 咋样返回错误信息呢? 难道说模型中返回一个数组['status'=>0,'msg'=>'手机号码已经被注册'];
之后由控制器接收模型返回的该数组 判断返回的status吗?
还有顺便问问服务层和逻辑层该如何运用??
问题有点多,希望大家告知下,多谢!
我觉得楼主问的重点应该是这一行:
如果把处理数据的代码都放到模型中,有时通过后要返回数据,不通过需要返回错误提示信息,在控制器中要作出判断确实有些麻烦。
统一返回的数据格式为['status'=>0/1,'info"=>msg/data] 确实是一种方法。
但写起来总觉得有些麻烦。
当然,返回的 msg 一般是 string,而返回的 data 一般是 array,所以,通过判断返回的数据类型也是可以考虑的。(但有时又会有特例)
所以,还是直接写到控制器中比较方便。
如果数据处理的逻辑比较复杂,而且可能在其它控制器中会用到,那么,写到模型中去。
如果逻辑比较简单,其它控制器中不可能用到,写到控制器中比较方便。
你要追求严谨,就要牺牲“便利性”!
然而,PHP 是一门很追求“便利性”的语言。