PHP:在域层或映射器层中验证?

时间:2012-06-07 07:59:53

标签: php validation zend-framework zend-form

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

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

  1. 在用户输入的域图层中。例如,在new user($_POST)时,__ construct()方法将针对输入表单验证$ _POST
  2. 在映射器层中保留数据。例如,$userMapper->insert($user)方法将根据输入表单验证$ user
  3. 我的感觉是应该在域层中处理验证,因为验证规则通常由业务规则驱动。话虽如此,我可能会遗漏一些东西,因为这是一个重大的设计决定,我希望你的意见。

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

    感谢您的投入!!!

1 个答案:

答案 0 :(得分:1)

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

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