bonuscred / data-validator
数据验证和数据分组库
v1.1.2
2024-07-05 00:11 UTC
Requires
- php: >=8.0
README
数据验证库。
安装
要通过 Composer 安装此依赖项。
composer require bonuscred/data-validator
使用
$data = [ 'field_cnpj' => '81.287.353/0001-16', 'field_cpf' => '124.784.370-07', 'field_int' => 123, 'field_string' => 'minhastring', 'field_date' => '2024-01-01 00:00:00' ]; $validator = new DataValidator\Validator; $validator->cnpj('field_cnpj'); $validator->cpf('field_cpf'); $validator->integer('field_int'); $validator->string('field_string'); $validator->date('field_date', 'Y-m-d H:i:s'); $validator->validate($data); //true
直接属性验证
DataValidator\Field\Region\Cpf::isValid('124.784.370-07'); //true DataValidator\Field\Array\Enum::isValid('a', ['b', 'c']); //false
处理异常
DataValidator\Validator 的默认行为是在找到无效数据后抛出异常,可以避免这种行为,并返回验证结果的布尔值。
//Evita disparo de Exception DataValidator\Error::throw(false); $data = [ 'field_cpf' => 'not-a-cpf' 'field_date' => 'not-a-date' ]; $validator = new DataValidator\Validator; $validator->cpf('field_cpf'); $validator->date('field_date'); if(!$validator->validate($data)){ $errors = $validator->getErrors(); //Array contendo todos os erros de validação echo $validator->getLastError()->field; //field_date echo ': '; echo $validator->getLastError()->message; //Mensagem de data inválida }
方法连接
可以连接 DataValidator\Validator 的所有验证方法。
(new DataValidator\Validator)->cnpj('field_cnpj') ->cpf('field_cpf') ->integer('field_int') ->string('field_string') ->date('field_date', 'Y-m-d H:i:s') ->validate($data);
复杂结构
DataValidator 可以通过 DataValidator\Field\Array\Multidimensional 组件验证复杂的数据结构。
接收到的第二个参数是一个布尔值,用于指示结构是否指简单嵌套数组或对象数组("数组数组")。
它是递归的,因此可以在其他多维组件内部传递多维组件,创建复杂且非线性的数据结构。
$data = [ 'field_int' => 123, 'complex' => [ 'a' => 'not-empty', 'b' => [ 'ba' => 1, 'bb' => 'is-string', ], 'c' => [ [ 'ca' => 1, 'cb' => 'cb_a' ], [ 'ca' => 2, 'cb' => 'cb_b' ] ] ] ]; $validator = new DataValidator\Validator; $validator->integer('field_int') ->multidimensional('complex', [ 'a' => new DataValidator\Field\Calculation\NotEmpty, 'b' => [ 'ba' => new DataValidator\Field\Type\Integer, 'bb' => new DataValidator\Field\Type\Stringval ], 'c' => new DataValidator\Field\Array\Multidimensional([ 'ca' => new DataValidator\Field\Type\Integer, 'cb' => new DataValidator\Field\Array\Enum(['cb_a', 'cb_b']) ], true) ]); $validator->validate($data); //true
条件验证
可以传递条件验证,其中只有当另一个验证匹配时才会考虑验证。
$validator->integer('field_int') ->addConditional( 'field_int', new DataValidator\Field\Calculation\Equal(123), 'field_condicional', new DataValidator\Field\Calculation\NotEmpty ); $validator->validate(['field_int' => 321]); //true $validator->validate(['field_int' => 123]); //false
验证组件
否定
可以通过前缀 "not_" 获取否定验证。在这种情况下,如果字段具有真实验证,则将其反转为假。
$validator->integer('field_int')->validate(['field_int' => 123]); //true $validator->not_integer('field_int')->validate(['field_int' => 123]); //false
翻译
目前组件提供葡萄牙语(pt-br)和英语(en)的错误消息,默认为 pt-br,可以根据需要进行更改。
DataValidator\Lang\Translator::set('en');
要求
- PHP 8.0 或更高版本