seorc / phpiv
A simple PHP input validation toolset.
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2025-07-05 19:55:00 UTC
README
This is a really-small PHP validator which is intended to offer a easy-to-use interface and some mechanisms to integrate with other tools. Here is how it works:
-
Create an associative array of values.
-
Create a validator for each of the values in that array. The preferred way of doing this is by grouping all your validators in a ValidatiorSet.
-
Apply the ValidatorSet to the array. A ValidationError will tel you that one or more fields in the array are not valid according to the rules you had defined.
-
Obtain the set of errors associated to their corresponding field by calling ValidationError::getErrors() on the exception instance you catched.
Please, see the tests to get some hints on how to make this in work in code. I plan to add some parctical examples to this docs in future commits.
The design of this validator imitates what other frameworks do. I created it to have a simple validation tool-belt for small projects and for fun.
Simple example:
<?php require __DIR__ . '/../vendor/autoload.php'; use Phpiv\ValidatorSet; use Phpiv\ValidationError; $validateThis = array( 'name' => 'John Doe', 'rating' => '6', 'comment' => 'This is too short.', 'email_address' => 'not an email address' ); $vs = new ValidatorSet(); $vs->add('string', 'name') ->required(); $vs->add('number', 'age') ->required(); $vs->add('number', 'rating') ->min(1) ->max(5); $vs->add('string', 'comment') ->length(20, 100) ->required(); $vs->add('email', 'email_address') ->required(); try { $vs->check($validateThis); } catch(ValidationError $e) { print_r($e->getErrors()); } /* The output is: Array ( [age] => Array ( [0] => Es requerido ) [rating] => Array ( [0] => No puede ser mayor de 5 ) [comment] => Array ( [0] => Debe tener 20 caracteres como mínimo ) [email_address] => Array ( [0] => No es un email válido ) ) */
Testing
You will require PHPUnit to run the test. It is included in the composer.json
as a development dep. You can run the tests as follows:
./vendor/bin/phpunit