phly/phly-rule-validation

简单的基于规则的验证框架

0.2.0 2023-11-20 22:02 UTC

This package is auto-updated.

Last update: 2024-09-21 19:40:17 UTC


README

Build Status

此库提供了一个基本的验证框架。

此库的目标

此库的明确目标是

  • 提供一种幂等的验证单个项目或数据集的方法。
  • 提供一个可扩展的框架来开发验证规则。
  • 允许处理可选数据,并使用默认值。
  • 允许报告验证错误消息。
  • 确保缺失的必填值被报告为验证失败。
  • 尽量减少依赖项。

非目标

  • 创建一套广泛的验证规则类。
  • 提供广泛机制来验证和返回嵌套数据集。
  • 提供一种由配置驱动的机制来创建规则集。
  • 提供HTML表单输入表示或创建HTML表单输入表示所需的所有元数据。

安装

composer require phly/phly-rule-validation

基本用法

use Phly\RuleValidation\Result\Result;
use Phly\RuleValidation\RuleSet\RuleSet;
use Phly\RuleValidation\Rule\CallbackRule;

$rules = new RuleSet();
$rules->add(new CallbackRule('flag', function (mixed $value, array $data): Result {
    if (! is_bool($value)) {
        return Result::forInvalidValue('flag', $value, 'Not a boolean value');
    }
    return Result::forValidValue('flag', $value);
}, default: false));
$rules->add(new MyCustomRule());
// and so on

$resultSet = $rules->validate($someFormData);

if ($resultSet->isValid()) {
    $values = $resultSet->getValues();
    // do something with values
} else {
    $messages = $resultSet->getMessages();
    // do something with error messages
}

// Get a result for a single key:
$flagResult = $resultSet->flag; // or $resultSet->getResult('flag')

// Get the value from a single result
$flag = $flagResult->value();

// Get the validation status from a single result
if ($flagResult->isValid()) {
    // ...
}

// Get an error message for a single result
if (! $flagResult->isValid()) {
    echo $flagResult->message();
}

文档

请参阅文档树(docs/)