1

是否应该使用单独的类而不是数据库写入类来完成输入验证?还是应该是写作类的方法?

例如。(速记版)

class DBWrite {

   public function add($input) {
       $data = new Validator($input);
       if($data->isValid() == true) {
           // write to DB
       }
   }

}

还是将验证作为 DBWrite 类的一部分会更好?或者在关注点分离(或其他)方面是否违反了太多?

class DBWrite {

   public function add($input) {
       if($this->inputIsValid() == true) {
           // write to DB
       }
   }

   private function inputIsValid() {
       // Check that input is valid and return true if it is
   }
}

任何其他想法也将不胜感激,谢谢!

4

2 回答 2

2

如果 Validator 可以在 DBWrite 以外的其他类中使用,或者如果以后您可能想要换出验证器,我会走单独的 Validator 类和子类的路线。您可能还想在 DBWrite 中添加一个方法来设置/获取您的验证器类,以便您可以在运行时换出不同的验证器。

于 2012-11-05T17:04:31.220 回答
0

您不需要在该级别进行验证。该对象可以被存储,或者它处于数据库层拒绝它的状态 - 然后您将看到数据库异常。

数据库本身通常会确保数据的顺序正确且有效。

但请确保您可以在每次将对象从一层传递到另一层时加倍工作并进行验证 - 并确保您在两层上都这样做:在第一层的输出侧和第二层的输入侧。

但通常只需要输入验证和数据库验证。

输入验证意味着,当对象来自存储层时验证对象,而不是在将它们放入存储层时验证。

此外,输入验证自然意味着您验证来自其他输入源的对象。但是在这里,不是在存储时。

于 2012-11-05T17:14:37.323 回答