1

我正在构建一个带有域层和映射器层的 PHP 应用程序,我需要决定在哪里验证用户输入。大多数验证将针对 Zend_Form 实例进行。(根据 Matthew Wierer O'Phinney 的教程,我将 Zend_Form 的验证方面视为属于模型)。

在我看来,这两个选项是:

  1. 在用户输入的领域层。例如,在new user($_POST)__construct() 方法将根据输入表单验证 $_POST
  2. 在持久化数据时在映射器层中。例如,该$userMapper->insert($user)方法将根据输入表单验证 $user

我的感觉是验证应该在域层中处理,因为验证规则通常由业务规则驱动。话虽如此,我可能会遗漏一些东西,因为这是一个重大的设计决策,我希望您能提供意见。

除了模型验证之外,我在后端还有数据库约束,并且正在计划 JS 验证以改善用户体验!

感谢您的输入!!!

4

1 回答 1

1

我认为在域模型中进行一些验证并没有什么真正的错误,但是您可能会对自己造成伤害。
如果您开始构建大量领域模型,您可能会发现自己一遍又一遍地重写相同的验证代码。让服务模型提供验证可能对您有利。
这样,当您添加域模型时,您只需通过验证服务传递数据,您就可以在一个地方为所有模型添加和删除验证器。您可能还会发现 ZF 已经提供的一些验证器已经足够了。

只是我的意见......祝你好运

于 2012-06-07T09:58:25.900 回答