php - 输入过滤器/验证代码属于 Controller 还是域模型?

标签 php model-view-controller validation input-filtering

我已经使用 php 一段时间了,但对 OO php 还是个新手。作为我自己的练习,我正在构建一个小型 MVC 框架。

我意识到这可能没有明确的答案,但我想知道:输入过滤器/验证代码属于哪里?

它应该是 Controller 的一部分,在那里解析请求吗?

或者在域模型中包含过滤器/验证代码是否更合适,以便每个域对象负责验证自己的信息。

如有任何建议,我们将不胜感激。

最佳答案

Controller 不负责以任何方式、形状或形式进行验证。 Controller 是表示层中负责对用户输入使用react的部分。不质疑。

验证主要由 domain objects 负责,这是大多数域业务逻辑在模型层中结束的地方。一些验证就是所谓的“数据完整性检查”(比如确保用户名是唯一的)。这些约束由 DB 结构强制执行(例如给定示例中的 UNIQUE 约束或其他一些示例中的 NOT NULL)。当您保存域对象时,使用 data mapper (或其他一些存储模式),它可能会引发一些异常。这些异常也可能用于在特定域对象上设置错误状态。

如果您有一个表单,它将绑定(bind)到一个或多个域对象,当表单被发布时,域对象会对其进行验证。当前 View 然后从模型层请求信息,如果设置了错误状态,则显示适当的警告。

关于php - 输入过滤器/验证代码属于 Controller 还是域模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12047360/

相关文章:

php - 在 PHP : (*UTF8) Works on Windows but not Linux 中使用 preg_match 匹配 UTF 字符

php - MySQL Inner Join 有限制吗?

php - 实用程序类可以是 MVC 框架中的模型类吗?

javascript - Angularjs 没有从 Controller 提供数据

.net - WPF 中的 MVVM - UserControls 和 GMap.NET

java - Apache Wicket 口 : Disabling validators on onCancel within a Wizard

php - 来自两个表的 SQL 查询按两个表列排序结果

php - Laravel 5.3,检查上传的文件是否大于 upload_max_filesize(可选上传)

java - Spring validator 抛出异常

javascript - 如何检查允许 m/d/y 和 yyyy-mm-dd 有效的日期是否有效