php - 定义 "Validation in the Model"

标签 php validation model domain-driven-design

关于用户输入验证的位置有一些讨论:

Should validation be done in Form objects, or the model?

Where do you do your validation? model, controller or view

这些讨论已经很老了,所以我想再次提出这个问题,看看是否有人有任何新的意见。如果没有,我提前道歉。

如果您来自模型阵营的验证 - 模型是否意味着数据的 OOP 表示(即 Active Record/Data Mapper)作为“实体”(借用 DDD 术语) - 在这种情况下,我假设,希望所有模型类都继承通用的验证约束。或者这些规则是否可以简单地成为模型中服务的一部分——即验证服务?例如,您可以考虑 Zend_Form 及其验证类作为模型的一部分吗?域模型的概念似乎并不局限于实体,因此验证可能不一定需要局限于此实体。

您似乎需要在表单和“实体”之间来回处理大量可能多余的值和响应 - 在某些情况下,您可能不会保留从用户输入接收到的数据,或者从用户输入接收到的数据完全没有。

最佳答案

我个人更喜欢在模型中进行验证。安全考虑当然超出了模型的用途范围,但没有人说模型只在一个地方以一种形式更新。通过将类型验证和健全性检查置于模型之外,您每次在其上设置任何内容时都必须进行验证,这会导致难以更新的复制/粘贴代码。

关于php - 定义 "Validation in the Model",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990863/

相关文章:

php - 为什么这个 .htaccess 代码会不断重定向?

ruby-on-rails - 无法将图像解析为 URL : to_model delegated to attachment,,但 Rails 5.2 中附件为零

javascript - javascript Submit() 是否停止了 php 验证的必要性?

javascript - 如何使用 jquery 清除单个验证消息

typescript - 错误 : Model not initialized: "Model" needs to be added t o a Sequelize instance before "call" can be called.(Sequelize-typescript)

html - 显示 View 文件中的特定数据

php - Mysql查询关系M-M表

php - 带有 php 支付页面的 ssl

php - 如何在单个 mySQL 条目中找到许多可能模式中的一种?更多内容

python - 如何验证/验证 Python 中的 X509 证书信任链?