suomec/ovalidator

PHP的对象验证器和属性映射器

v1.0.3 2024-05-21 12:07 UTC

This package is auto-updated.

Last update: 2024-09-21 12:55:32 UTC


README

本包创建用于将用户输入映射到预定义对象,并带有验证模式(自定义规则)。

通常您有用户输入作为数组,需要将其映射/验证到值对象。本包可以帮助您。

首先,您需要一个 Form - 类,其中包含用户原始数据。它是 /src/Form.php 类。

$form = (new Form())->fromArray([
    'field_1' => 'any value',
    'field_2' => 15,
]);

其次,您需要一个具有内部属性的对象。它只是 您的 类的一个实例。

class Input
{
    public int $field_2;
}

$input = new Input();

第三,您需要一组规则来映射输入到该类。它是一个 Config。规则是一系列的 ->add() 方法

$config = (new Config())
    ->add('field_2', 'Some description', State::Required, [
        new VInteger(),
        new VMin(10),
        new VMax(20),
    ])
;

最后是一些用于验证和映射的代码

$result = (new Mapper($form, $config))->toObject($input, new ReflectionSetter());

如果您有一个输入: ['field_2' => 15] 则是正确的,并且 $input->field_2 将有值 15。但对于输入 ['field_2' => 999]$result 变量将包含错误列表(VMax 检查失败,因为 999 > 20)。

安装

运行: composer require suomec/ovalidator

验证器

内置验证器在 validators.md 文件中描述。您可以创建自己的验证器,该验证器应实现 Validator 接口。

设置器

设置器是特殊的对象,用于将验证后的输入映射到您的对象。有两种默认设置器 - Direct 和基于 Reflection 的。第一个设置器只是通过 $object->$property 将输入应用到对象上,而不进行扩展检查。第二个设置器通过反射检查属性的类型,如果属性是另一个对象,则检查支持接口。

本地化

本地化文件位于 /etc/ 文件夹中。有一个用于快速验证运行的类:OValidator::validateAndSet()。它从默认文件 loc-en.php 创建本地化对象。如果需要,您可以传递自己的文件路径。

示例

您可以在 /examples/ 目录中找到 更多示例。有很多不同的情况,其中可以使用该映射器和验证器。如果您有任何问题或改进建议,请随时创建问题。