fastnorth/validator

FastNorth Validator

该软件包的官方仓库似乎已不存在,因此该软件包已被冻结。

0.0.13 2023-11-23 19:28 UTC

README

Build Status

这是一个简单的数据验证库,用于处理各种数据结构。它是由于对现有库的不满而诞生的,这些库要么非常复杂且难以实现,要么似乎存在设计缺陷。

安装

通过Composer进行安装

composer require fastnorth/validator

使用方法

数据验证是一个两步过程

  • 通过定义约束来定义数据应该看起来是什么样子
  • 验证数据集是否与约束匹配

第一步是通过创建一个Definition来完成的,第二步是通过将数据和定义通过一个Validator来完成的。

定义

定义通过“字段”为基础进行指定。字段可以是可以通过Symfony的PropertyAccess组件访问的任何内容。

您可以选择扩展Definition,或者在一个其实例上定义约束

<?php
use FastNorth\Validator\Definition;

$definition = new Definition;

$definition

    // Validate [foo] has a minimum string length of 10 characters
    ->field('[foo]')
    ->should(new Constraint\StringLength(['min' => 10]))

    // [bar] has to exist
    ->field('[bar]')
    ->required();

验证

验证使用Validator类。它在构造函数中接受一个Definition实例,并有一个validate()方法来验证任何数据以匹配定义。此方法返回一个Validation实例。

<?php

use FastNorth\Validator\Definition;
$validator = new Validator($definition);

// $yourData = ...;

$validation = $validator->validate($yourData);

if ($validation->passes()) {
    // Data matched definition
} else {
    // Validation messages are returned as an array per field
    foreach($validation->getMessages() as $field => $messagesPerField) {
        foreach($messagesPerField as $message) {
            echo $message;
        }
    }
}