Lea*_*yes 51 php forms validation model-view-controller design-patterns
我正在研究一个广泛使用MVC设计模式的PHP项目.我希望在表单中添加验证,并且对于验证的正确位置感到好奇.
由于生成表单的方式,对回发数据的验证在视图组件中更简单,重复性更低.让视图验证响应数据是否可接受,或者应该在控制器甚至模型中实现?
有什么好处?
Mik*_*wis 98
验证的正确位置是模型.
这最有意义,因为您正在对数据进行验证,这是模型所代表的.就CRUD更新而言,应始终以某种方式使用模型.
如果要从视图中更改数据,则应检查验证.
如果您有控制器更改数据,您应该检查验证.
最后,如果你让模型本身改变数据,你仍然应该有验证.
实现此状态的唯一方法是将验证放入模型中.
由于性能和更快的响应,在模型中实现验证后,您应该尝试添加某种客户端(JS)以立即通知最终用户.
验证始终与数据有关.你为什么要验证数据?因此,您可以保持存储信息的完整性.在模型级别进行验证可以使数据在理论上始终正确.这总是一种必要性.从那里,您可以在业务逻辑和客户端添加额外的验证,以使您的应用程序更加用户友好.
Abi*_*usX 31
如果您在客户端验证数据(即Javascript验证),这绝对是不够的,根本不安全,您应该在View中实现它.
如果您正在验证服务器端的数据,并且您的验证不需要应用程序业务逻辑(即您没有检查用户是否在其帐户中有足够的信用),您应该在控制器中进行验证.
如果验证需要业务逻辑,请在模型中实现它并通过控制器调用它.
回发验证不好,因为它会带来很大的压力和延迟,唯一的好处是程序员(不被计算).
您可以使用正则表达式进行大多数验证,它在PHP和JS上具有相同的语法(几乎).