表单验证和业务验证是否过多?

Rob*_*bri 3 oop frameworks domain-driven-design dry single-responsibility-principle

我有关于表单验证和业务验证的问题.我看到很多使用某种表单验证库的框架.您提交了一些值,库会验证表单中的值.如果不行,它将在您的屏幕上显示一些错误.如果全部计划,则将值设置为域对象.这里的值将是或者,更好的说,应该再次验证.很可能在验证库中进行相同的验证.我知道2个PHP框架具有这种构造Zend/Kohana.

当我看到编程和一些原则,如不要重复自己(DRY)和单一责任原则(SRP)时,这不是一个好方法.如你所见,它验证了两次.为什么不创建进行实际验证的域对象.

示例:提交包含用户名和电子邮件表单的表单.用户名字段和电子邮件字段的值将填充在2个不同的域对象中:用户名和电子邮件

class Username {}
class Email {}
Run Code Online (Sandbox Code Playgroud)

这些对象验证其数据,如果无效则抛出异常.你同意吗?您如何看待这种方法?有没有更好的方法来实现验证?我对很多处理这些东西的框架/开发人员感到困惑.他们都错了还是我错过了一点?

编辑:我知道还应该有客户端类的验证.在我的意见中,这是一个不同的球赛.如果您对此有一些评论以及处理此类内容的方法,请提供.

For*_*ega 6

  • 表单验证(客户端)实际上只是为了可用性
  • 业务验证是真正的验证

您的应用程序可能在没有您称之为表单验证的情况下工作,它对用户来说看起来不太好.但是,需要进行业务验证以防止数据损坏.