suomec / ovalidator
PHP的对象验证器和属性映射器
Requires
- php: >=8.1
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5
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/ 目录中找到 更多示例。有很多不同的情况,其中可以使用该映射器和验证器。如果您有任何问题或改进建议,请随时创建问题。