dav*_*vid 14 php model-view-controller
好吧,之前可能已经提出这个问题,但是我找不到一个明确的答案.在MVC模式中应该对输入进行验证吗?
我想说,空字段和基本的一般验证之类的东西应该在控制器中发生,并且规则作为例如用户名/密码等的长度和有效字符应该在模型层发生.
然而,这意味着将这个burdon传播到应用程序周围肯定也不好?
对不起,如果这个问题是天真的,但我对这种类型的编程相对较新,并希望从一开始就把事情弄清楚.
验证是模型的工作.
由于模型具有各种属性(字段),因此只有模型才能知道哪种输入组合使该模型有效.它不仅仅是一个字段是空白的,还是该字段的输入与某个模式匹配,但有时这是字段输入的组合,或者模型与确定有效状态的其他模型的关系.
你的模型应该封装这个逻辑,这样你就可以查询它("你有效吗?"),而不是让它分散在代码的其他部分.
没有单一的答案。将开始浮出水面的是,验证不能仅在模型上进行,因为模型不了解其周围环境。一个典型的例子是重复的名称,其中唯一性很重要,形成视觉立场。一旦需求出现,某种验证将在模型外部发生,或者模型必须了解开始耦合的周围环境。
我尝试将尽可能多的内容推入模型中,这与模型/需求相关。一旦超出这个范围,唯一可以去的地方就是控制器内。