刚学完这个验证器封装,刚开始还是有点晕的,后面仔细看了两遍,才慢慢感觉到了继承这个方法的好处,看来还得慢慢锻炼锻炼;
问题:
结合上篇的自定义验证器,发现每次使用验证器都重复这样写代码;
//验证器
$validate = new ValidateCustom();
//执行 批量验证
$result = $validate->batch()->check($data);
//输出错误提示
var_dump($validate->getError());
看了他们写的代码如下:
1.校验的基类
class BaseValidata extends Validata{
//把那段校验的代码放在此次
/**
* 验证方法并返回相应的验证错误信息
*/
public function goCheck()
{
$data = Request::instance()->param();
$result = $this->check($data);
if ($result) {
return true;
} else {
$er = $this->getError();
throw new Exception($er);
}
}
}
2.自定义验证器,自定义验证规则
class ValidateCustom extends BaseValidata
{
protected $rule = [
'id' => 'require|isPositiveInteger'
];
/**
* 判断一个数是否为正整数
*/
protected function isPositiveInteger($value, $rule = '', $data = '', $field = '')
{
if (is_numeric($value) && is_int($value + 0) && ($value + 0) > 0) {
return true;
} else {
return $field . '必须为正整数';
}
}
}
3.使用
(new ValidateCustom())->goCheck();
是不是有点感觉了!