我有关于表单验证和业务验证的问题。我看到很多框架使用某种形式的验证库。您提交一些值,库会验证表单中的值。如果不正常,它会在您的屏幕上显示一些错误。如果一切按计划进行,这些值将被设置到域对象中。在这里,这些值将被验证,或者更好地说,应该(再次)验证。验证库中很可能是相同的验证。我知道 2 个 PHP 框架具有这种构造 Zend/Kohana。
当我查看编程和一些原则时,例如不要重复自己(DRY) 和单一职责原则(SRP),这不是一个好方法。如您所见,它验证了两次。为什么不创建进行实际验证的域对象。
示例:提交带有用户名和电子邮件表单的表单。用户名字段和电子邮件字段的值将填充到 2 个不同的域对象中:用户名和电子邮件
class Username {}
class Email {}
这些对象验证它们的数据,如果无效则抛出异常。你同意?您如何看待这种方法?有没有更好的方法来实现验证?我对很多处理这些东西的框架/开发人员感到困惑。他们都是错的还是我错过了一点?
编辑:我知道还应该有客户端类型的验证。在我看来,这是一个不同的球赛。如果您对此有一些意见以及处理此类事情的方法,请提供。