加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 您应该在模型中验证吗? (基于Symfony的问题,但与一般的MVC有关)

发布时间:2020-09-01 05:09:27 所属栏目:PHP 来源:互联网
导读:这是一个与Symfony有关的快速问题,但可能是一般的MVC问题. 我的模型中有一个类,例如WebUser.此类具有email_address属性.此值必须对每个WebUser都是唯一的. 现在,我已经完成了所有我的Symfony表单验证了email_address对于给定的WebUser是唯一的,但是我想知道是

这是一个与Symfony有关的快速问题,但可能是一般的MVC问题.

我的模型中有一个类,例如WebUser.此类具有email_address属性.此值必须对每个WebUser都是唯一的.

现在,我已经完成了所有我的Symfony表单验证了email_address对于给定的WebUser是唯一的,但是我想知道是否应该将此验证添加到模型中?

但这也让我想到,如果你真的验证模型中的每个set()方法?确定数据库中没有错误的数据结束似乎是一个明智的决定,但是大多数(如果不是全部)数据必须通过控制器,这也会验证.所以对我来说,似乎我两次运行相同的验证,它似乎毫无意义?

你对此有何看法?我仍然倾向于在模型中进行验证,因为它决定了业务逻辑,因此最有意义.

如果你应该在模型中验证,你如何在Symfony中抛出一个由表单框架正确处理的适当的set()错误?

谢谢.

我不同意“验证应该是域逻辑的一部分,而不是前端逻辑”.

验证是应用程序的复杂功能部分,必须具有上下文感知功能.即.你必须知道用户是否已登录,她拥有什么样的凭据,请求/表单的状态等等.模型必须与上下文无关(在任何环境中工作,不仅是http请求,还有cli等),因此他们不了解用户,状态和http请求.这是对模型类的可测试性的强烈要求.

对于上述原因,功能验证必须属于知道应用程序状态的形式(即会话). symfony对sfValidator *类有很大帮助,这些类确实属于表单组件.这就是为什么表单通过功能测试进行测试的原因.

数据验证应该在模型中(即检查值是整数还是字符串,检查它是否为空等等).使用Doctrine模式内验证规则可以轻松完成此操作.

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读