jasperfw / validator
表单和数据验证库
1.1.1
2022-06-16 16:13 UTC
Requires
- php: ^8.1
- jasperfw/core: ^1.0
- psr/log: 1.0.*
Requires (Dev)
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-16 21:11:47 UTC
README
Validator库提供了一个全面、易于实现和扩展的输入和数据验证系统。
特性
- 支持多种常见的输入
- 允许通过约束使用自定义验证规则
- 可以使用过滤器预先清理值
- 可以轻松通过新的数据类型、约束和过滤器进行扩展。
说明
安装
使用composer安装 composer require "jasperfw\validator"
基本用法
重要:在进行验证时,除非设置了Required约束,否则空值始终通过!
快速验证单个值
$trim = new Trim() // This filter will trim the value before validating $required = new Required() // This constraint will cause validation to fail if the value is empty $minLegnth = new MinimumLength(5); // Make sure the value contains at least 5 characters $errorMessage = null // This will be a string with the error message if validation fails. Optional. $result = Alpha::quickValidate('bob', [$trim], [$required, $minLength], $errorMessage);
验证一组数据
通过创建validationSet对象并向其中添加验证器来验证一组数据。注意,在处理表单时,不需要传入数据。只需设置输入源为GET或POST,验证器将自动获取值。
$required = new Required(); // Some values will be required. $validationSet = new ValidationSet(); $validationSet->addValidator(newAlpha('username', InputSources::GET, [$required], [new StripTags(), new Trim()])); $validationSet->addValidator(newPassword('password', InputSources::GET, [$required], [new Trim()])); $isValid = $validationSet->isValid(); // Check the entire set. $isUsernameValid = $validationSet->isFieldValid('username'); // Check if a single field is valid $errors = $validationSet->getErrorMessages(); // Get all the errors as an array of strings $value = $validationSet->getFieldValue('username'); // Get the value of a field, or null if the value was not valid
包含的类
验证器
这些是包含的验证器。可以通过扩展Validator类创建新的验证器。
- Alpha - 只允许字母。
- AlphaNumeric - 只允许字母或数字。
- Boolean - 允许 "true"、"false"、"y" 或 "n" - 不区分大小写。
- Date - 值必须可以通过PHP的date_create函数解析为日期。
- Decimal - 值必须是整数或小数(如价格)。
- Email - 值必须是格式有效的电子邮件地址。
- MultilineString - 允许几乎任何多行字符串。与TextString相同,但允许换行。
- Name - 允许字母、空格和撇号,这些是名字中的常见字符。
- Number - 只允许数字。
- Password - 允许除换行符以外的任何字符。要强制复杂度,请使用ComplexPassword约束。与MinimumLength和MaximumLength约束一起使用可强制指定长度。
- Phone - 验证格式为+NNN NNNNNNNNNxNNNNN的国际电话号码,其中包含六个或更多数字(不包括国家代码),以及一个可选的由x引导的扩展。x前面可以有空间。国家代码可以是1到3位数字。不允许其他标点符号或格式化字符。
- PhoneUS - 美国电话号码验证器。删除任何前面的1以及破折号和括号。
- PostalCodeCA - 加拿大邮政编码验证器。
- PostalCodeUS - 美国邮政编码/ZIP代码验证器。
- TextString - 允许除换行符以外的任何字符。
- Time - 时间字符串的基本验证器。期望HH:MM,但检查范围不大。
- Username - 基本用户名验证。默认接受除换行符以外的任何字符。
过滤器
过滤器在验证之前更改输入。目前,只有两个过滤器。可以通过扩展Filter类创建新的过滤器。
- Trim - 去除传递的值。与PHP的
trim()
相同。 - StripTags - 删除任何HTML标签。与PHP的
striptags()
相同。
约束
约束用于修改基本验证器允许的内容。只有在基本验证成功的情况下才会检查这些约束,因此它们不能用来将失败的验证转换为成功。
- ComplexPassword - 至少包含一个字母、一个数字和一个特殊字符的复杂密码。与MinimumLength和MaximumLength约束结合使用,以强制密码长度。
- DateFormat - 使用\DateTime检查提供的值是否为可识别的日期和/或时间格式。
- InArray - 将此约束添加到必须包含列表中值的字段。非常适合用于验证表单中的选择字段。
- MaximumLength - 验证值中不包含超过一定数量的字符。
- MaximumValue - 检查提供的值是否小于或等于某个特定金额。
- MinimumLength - 验证值中至少包含一定数量的字符。
- MinimumValue - 检查提供的值是否大于或等于某个特定金额。
- Regex - 设置自定义正则表达式以验证值。与TextString或MultilineString结合使用,这将在动态创建一个全新的Validator时允许。
- Required - 默认情况下,空值会自动绕过所有其他验证和约束,被视为有效。这包括MinimumLength和MaximumLength。设置Required约束将导致如果值为空,验证失败。