我有这个关于表单验证和业务验证的问题。
我看到很多框架使用某种形式的验证库。您提交一些值,库会验证表单中的值。如果不行,它会在你的屏幕上显示一些错误。如果一切按计划进行,这些值将被设置到域对象中。在这里,这些值将被验证,或者更准确地说,应该被验证(再次)。很可能验证库中的验证相同。我知道 2 个 PHP 框架具有这种结构 Zend/Kohana。
当我看编程和一些原则时,比如 Don't Repeat Yourself (干)和 single responsibility principle (建议零售价)
这不是一个好方法。如您所见,它验证了两次。
为什么不创建进行实际验证的域对象。
示例:包含用户名和电子邮件的表单
表单提交。用户名字段和电子邮件字段的值将填充在 2 个不同的域对象中:用户名和电子邮件
class Username {}
class Email {}
这些对象验证它们的数据,如果无效则抛出异常。
你同意?您如何看待这种方法?有没有更好的方法来实现验证?
我对处理这些东西的许多框架/开发人员感到困惑。他们都错了还是我错过了一点?
编辑:
我知道也应该有客户端验证。在我看来,这是一个不同的球赛。如果您对此有一些评论以及处理此类事情的方法,请提供。
最佳答案
您的应用程序可能会在没有您所谓的表单验证的情况下工作,它只会对用户看起来不太好。然而,需要业务验证以防止损坏的数据。
关于oop - 表单验证和业务验证太多了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951974/