fresh-advance / array-validator
The component validates form data or any given array by provided rule list.
v2.2.0
2021-02-06 20:47 UTC
Requires
- php: >=7.3
Requires (Dev)
- phpstan/phpstan: ^0.12.54
- phpunit/phpunit: *
- squizlabs/php_codesniffer: *
README
Simple form data / any array validation tool.
- Component validates an array by provided rules list.
- Its possible to use multiple configurations of one rule for one field in one validation run.
- Not dependant on other third party components.
- Tested with PHP 7.3 and up, including PHP 8.0. Fits PSR-12 coding style.
Installation
Installation via composer:
composer require fresh-advance/array-validator
Usage example
use Sieg\ArrayValidator\Keys; use Sieg\ArrayValidator\Rule; use Sieg\ArrayValidator\RuleCase; use Sieg\ArrayValidator\RuleCaseCollection; use Sieg\ArrayValidator\Validator; $configurationExample = new RuleCaseCollection( new RuleCase( new Keys\All(), new Rule\LengthRange(5, 7) ), new RuleCase( new Keys\Collection('field1', 'field3'), new Rule\Expression('/value\d+/') ), new RuleCase( new Keys\Expression('/2$/'), new Rule\Expression('/value\d+/'), 'Special message' ) ); $dataExample = [ 'field1' => 'value1', 'field2' => 'something' ]; $validator = new Validator($configurationExample); $errors = $validator->validate($dataExample); if (empty($errors)) { // array fits validation configuration echo 'ok'; } else { print_r($errors); }
Gives validation errors with fields as keys:
Array
(
[field2] => Array
(
[0] => VALIDATOR_RULE_LENGTH_TOO_HIGH
[1] => Special message
)
[field3] => Array
(
[0] => VALIDATOR_RULE_EXPRESSION_MATCH_FAILED
)
)
Predefined Rules
There are some basic rules implemented with the component:
-
Callback(closure $closure)
- Takes Closure as parameter. $key and $data will be sent to Closure.
-
EqualsTo(mixed $value)
- Check if value is equal to Rule $value parameter.
-
EqualsToKey(string $key)
- Check if value is equal to other key value.
-
Expression(string $regex)
- Takes regex as parameter.
-
Filter(int $filterRule, array $filterOptions)
- Rule uses
filter_var
function for validating the value. - Takes PHP filter constants to apply as first param:
- FILTER_VALIDATE_EMAIL
- FILTER_VALIDATE_FLOAT
- FILTER_VALIDATE_INT
- FILTER_VALIDATE_IP
- FILTER_VALIDATE_MAC
- FILTER_VALIDATE_REGEXP
- FILTER_VALIDATE_URL
- Takes
filter_var
options array as second param. - Refer to
filter_var
function documentation for more information
- Rule uses
-
InArray(array $choices)
-
Length(int $length)
-
LengthRange(int $min, int $max)
-
Max(int $max)
-
MaxLength(int $max)
-
Min(int $min)
-
MinLength(int $min)
-
Range(int $min, int $max)
-
Required
- Check if the field exists and not empty
Create and use custom Rules
- Custom rule should extend
\Sieg\ArrayValidator\Rule\AbstractRule
- Use it as regular rules whose comes with the component.
- Validator catches
\Sieg\ArrayValidator\Exception\RuleFailed
type Exceptions for setting field error messages.