jasperfw/validator

表单和数据验证库

1.1.1 2022-06-16 16:13 UTC

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约束将导致如果值为空,验证失败。