apolinux / validator
简单的表单验证器
v0.6
2024-07-31 14:52 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.6
README
根据定义或自定义规则从数组或对象中验证输入字段。
这些规则包括:定义、PHP函数、is_array、is_object、min、max、regex、闭包、静态方法。
规则可以通过'|'字符或使用数组列表连接,例如:'rule1|rule2|rule3 ...' 或 ['rule1', 'rule2', 'rule3',...]。
示例
<?php
$rules = [
'name' => 'is_alnum' , // php function
'address' => 'defined' , // internal validator
'user' => [ 'regex' => '/\w+/' , 'is_int' => null , ...] ,//rules defined in array
'phone' => ['method' => '\namespace\subnamespace\Classname::validationMethod' ..]
'fieldname5'=> 'defined|is_int|min:3|max:20', // several rules in one line separated by '|'
...
]
$validator = new Apolinux\Validator ;
if( ! $validator->validate($rules) ){
throw new \Exception('There is an error with input:' . $validator->getLastError()) ;
}
规则
规则列表
- defined : 验证字段是否定义
- min : 验证数字是否大于最小值或数组元素是否多于最小值
- max : 验证数字是否小于最大值或数组元素是否少于最大值
- minlength : 验证字符长度是否大于值
- maxlength : 验证字符长度是否少于值
- range : 验证字段是否在浮点数范围内
- is_int : 验证数字是否为整数
- is_array : 验证字段是否为数组
- is_object : 验证字段是否为对象
- is_scalar : 使用is_scalar PHP函数验证数字是否为标量
- regex : 验证字段是否匹配正则表达式。必须包含括号如'/'
- method : 使用静态方法进行验证。方法必须返回布尔值
静态方法
静态方法定义如下
$rules = [
'field_name' => ['method' => 'Apolinux\CustomNamespace\ValidatorField::validate', ...]
]
静态方法必须接受三个参数
- 输入数据数组
- 字段值
- 验证失败时显示的文本消息。必须通过引用传递
如果验证通过,则返回true。
除了上述定义的函数外,还可以使用函数和可调用对象进行验证
可调用对象
使用匿名函数进行验证。与静态方法定义类似,该函数必须接受三个参数
- 输入数据数组
- 字段值
- 验证失败时显示的文本消息。必须通过引用传递
如果验证通过,则返回true。
示例
$rules = [
'name' => function($input, $value, &$message){
//validate data
if(validation_failed){
return false ;
}
// no error in validation
return true ;
},
...
] ;
function : 使用现有函数进行验证
$rules = [
'field_name1' => 'is_double' , // PHP function
'field_name2' => 'user_defined_function', // custom function
...
] ;
验证全部
默认情况下,验证器在第一个错误时停止。如果需要显示所有错误,请以第二个参数为false运行validate()方法
$validator->validate($rules, false) ;
要获取所有错误,请调用getErrors()方法。
待办事项
- 添加多语言支持
- 添加更多规则:等于长度、is_json、is_xml、is_email、is_url等
- 按字段累积错误
变更
添加版本0.5