哪个"层"负责验证数据

Ext*_*kun 0 php validation

假设我设计了这样的架构 - 应用程序由模块组成,模块使用特定于域的实用程序来执行对模型或数据库的更改.

例如,注册模块显示表单,接受输入,然后使用注册实用程序执行调用以插入用户信息.谁负责执行数据验证?

1)模块,因为它是'优越'将数据传递给实用程序2)实用程序,这样没有可疑数据将通过3)两者都应该有彻底的数据验证4)其他一些安排

思考?意见?

Bre*_*ker 5

任何使用数据的组件都负责为自己的目的验证数据.

例如:服务层的某些部分可以验证输入字段是否是有效的电子邮件地址,因为这是业务规则所要求的.虽然数据层可以验证数据不长于特定长度,因为这是可以放入数据库列的最大数据,但它并不特别在意它是否是电子邮件地址.

它也应该在允许重复使用的位置.因此(在MVC中)上面的"有效电子邮件"验证不会进入控制器或视图,因为输入到该业务逻辑可能会在多个控制器/视图中发生,这将需要重复验证逻辑.