我正在使用面向对象的方法开发一个新的应用程序,其中涉及一些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我的控制器应该如何看,并返回验证错误?
我已经看到大多数人在控制器中进行验证,但是我认为应该是验证的模型,因为它将使用数据,我们可以重用该模型而不重复自己.
但是,有时候验证规则可能需要在某些特殊情况下有所不同,例如对不同视图的不同验证或对晚餐管理员的不同验证.
你会说哪一个符合最佳做法?