6
如果模型正在验证数据,那么是否应该在输入错误时抛出异常?
读这个SO问题,似乎不赞成抛出用于验证用户输入的异常。 但是谁应该验证这些数据呢?在我的应用程序中,所有验证都是在业务层完成的,因为只有类本身才真正知道哪些值对其属性中的每个属性都有效。如果我要将用于验证属性的规则复制到控制器,则验证规则可能会更改,并且现在有两个地方需要进行修改。 我以为应该在业务层上进行验证的前提是否错误? 我做的事 因此,我的代码通常最终如下所示: <?php class Person { private $name; private $age; public function setName($n) { $n = trim($n); if (mb_strlen($n) == 0) { throw new ValidationException("Name cannot be empty"); } $this->name = $n; } public function setAge($a) { if (!is_int($a)) { if (!ctype_digit(trim($a))) { throw new ValidationException("Age $a …