smoren / validator
Responsible validation tools with fluent interface
v0.4.0
2023-05-09 03:02 UTC
Requires
- php: >=7.4
Requires (Dev)
- codeception/codeception: ^4.2.1
- codeception/module-asserts: ^2.0
- php-coveralls/php-coveralls: ^2.0
- phpstan/phpstan: ^1.8
- squizlabs/php_codesniffer: 3.*
README
How to install to your project
composer require smoren/validator
Usage
use Smoren\Validator\Factories\Value; use Smoren\Validator\Exceptions\ValidationError; $rule = Value::container() ->array() ->hasAttribute('id', Value::integer()->positive()) ->hasAttribute('probability', Value::float()->between(0, 1)) ->hasAttribute('vectors', Value::container()->array()->allValuesAre( Value::container() ->array() ->lengthIs(Value::integer()->equal(2)) ->allValuesAre(Value::integer()) )); $validInput = [ 'id' => 13, 'probability' => 0.92, 'vectors' => [[1, 2], [3, 4], [5, 6]], ]; try { $rule->validate($validInput); } catch (ValidationError $e) { // Input is valid so this block is unreachable. } $invalidInput = [ 'id' => '13', 'probability' => 1.92, 'vectors' => [[1, 2.1], [3, 4], [5, 6]], ]; try { $rule->validate($invalidInput); } catch (ValidationError $e) { // Input is invalid so we catch the exception. print_r($e->getViolatedRestrictions()); /* [ ['attribute_is', [ 'attribute' => 'id', 'rule' => 'integer', 'violated_restrictions' => [ ['integer', []] ] ]], ['attribute_is', [ 'attribute' => 'probability', 'rule' => 'float', 'violated_restrictions' => [ ['between', [ 'start' => 0, 'end' => 1 ]] ] ]], ['attribute_is', [ 'attribute' => 'vectors', 'rule' => 'container', 'violated_restrictions' => [ ['all_values_are', [ 'rule' => 'container', 'violated_restrictions' => [ ['all_values_are', [ 'rule' => 'integer', 'violated_restrictions' => [ ['integer', []] ] ]] ] ]] ] ]] ] */ }
Unit testing
composer install
composer test-init
composer test
Standards
PHP Validator Tools conforms to the following standards:
- PSR-1 — Basic coding standard
- PSR-4 — Autoloader
- PSR-12 — Extended coding style guide
License
PHP Validation Tools is licensed under the MIT License.