我正在使用面向对象的方法开发一个新的应用程序,其中涉及一些REST,我没有使用任何框架.
我的问题是在下面的setter中验证用户输入的最佳位置:
public function setSalary($salary)
{
if (Validator::money($salary))
$this->salary = $salary;
else
return 'Error that is an invalid number';
}
还是在控制器中?
public function updateSalary()
{
$errors = array();
if (Validator::money($_POST['salary']))
$salary = $_POST['salary'];
else
$errors ['salary'] = 'Error that is an invalid number';
if(count($errors))
return $errors;
$employee = new Employee($_POST['e_Id']);
$employee->setSalary($salary);
$employee->save();
}
如果我要放入setter我的控制器应该如何看,并返回验证错误?
我已经看到大多数人在控制器中进行验证,但是我认为应该是验证的模型,因为它将使用数据,我们可以重用该模型而不重复自己.
但是,有时候验证规则可能需要在某些特殊情况下有所不同,例如对不同视图的不同验证或对晚餐管理员的不同验证.
你会说哪一个符合最佳做法?
本文探讨了在使用面向对象方法开发应用程序时,用户输入验证的最佳实践。作者提出疑问,验证应该在setter方法内进行,还是在控制器中处理。他们提供了两种方案,一种是直接在setter中验证,另一种是在控制器中执行验证。作者认为模型层的验证可以提高代码复用,但特定场景下验证规则可能变化,这可能导致在控制器中进行验证更为合适。讨论了最佳做法,寻求社区的观点。
160

被折叠的 条评论
为什么被折叠?



