xervice / validator
2.1.0
2019-05-01 20:15 UTC
Requires
- php: >=7.1.0
- xervice/array-handler: ^2.1.0
- xervice/core: ^4.0.0
Requires (Dev)
README
安装
composer require xervice/validator
使用
要使用配置器,您必须定义validator-configuration插件。
use Xervice\Validator\Business\Dependency\ValidatorConfigurationProviderPluginInterface; use Xervice\Validator\Business\Model\ValidatorType\IsType; class TestValidatorConfig implements ValidatorConfigurationProviderPluginInterface { /** * @return array */ public function getValidatorConfiguration(): array { return [ 'unit', 'floatTest', 'child', [ 'unit' => [ 'type' => IsType::TYPE_INTEGER ], 'floatTest' => [ 'type' => IsType::TYPE_FLOAT ] ], [ 'isTest' => [ 'required' => true, 'type' => IsType::TYPE_BOOLEAN ] ], [ 'floatTest' => function ($value) { return $value === 1.23; }, 'child' => [ 'subchild1', 'subchild2' => [ 'type' => IsType::TYPE_OBJECT ], 'subchild3' => [ 'type' => IsType::TYPE_BOOLEAN ] ] ], [ 'child.*' => function ($value) { return (is_string($value) || is_object($value)); } ] ]; } }
配置定义为数组。如果一个条目是“keyname”的值,没有键,则您定义此键为必需的。您还可以将keyname定义为具有“required”和“type”参数的数组,以定义给定键的特定值。对于嵌套数组,您可以使用level1.level2.level3直接引用子值,或者您可以定义所有元素的价值,如level1.level2.* => [level3 => [type => 'integer']]。对于自定义验证,您可以定义一个闭包来处理一个键名。您将在闭包中作为参数获得值。
扩展
您可以在validator依赖提供者中编写自己的Validator-插件并配置它们。您的插件必须实现\Xervice\Validator\Business\Dependency\ValidatorTypePluginInterface接口。
class ExamplePlugin extends AbstractBusinessPlugin implements ValidatorTypePluginInterface { protected const NAME = 'ExamplePlugin'; /** * @return string */ public function getTypeName(): string { return static::NAME; } /** * @param mixed $config * * @return bool */ public function isResponsible($config): bool { return true; } /** * @param array $data * @param string $key * @param mixed $config */ public function validate(array $data, string $key, $config): void { if (<is-not-valid>) { throw new ValidatorException('Foo is not valid because!'); } } }