输入验证应该使用单独的类,而不是DB写入类吗?或者它应该是写作课的方法吗?
EG。 (简写版)
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
}
}
任何其他想法也将不胜感激,谢谢!
答案 0 :(得分:2)
如果Validator可以在DBWrite以外的其他类中使用,或者稍后您可能想要在以后交换验证器,我会选择单独的Validator类和子类的路径。您可能还想在DBWrite中添加一个设置/获取验证器类的方法,以便在运行时交换不同的验证器。
答案 1 :(得分:0)
您不需要在该级别进行验证。对象可以存储,也可以处于数据库层拒绝它的状态 - 然后您将看到数据库异常。
数据库本身通常会注意数据的正确顺序和有效性。
但是确保每次将对象从一个层传递到另一个层时,您可以将工作加倍并验证 - 并确保在两个层上执行此操作:在第一层的输出端和第二层的输入端层
但通常只需输入验证和数据库验证。
输入验证意味着您在对象来自存储层时验证对象,而不是在将对象放入存储层时验证对象。
此外,输入验证自然意味着您在来自其他输入源时验证对象。但在这里,不是在存储时。