bartosz-maciaszek / validation
Validation library for PHP 5.6+ / HHVM inspired by Joi.
Installs: 21 823
Dependents: 0
Suggesters: 0
Security: 0
Stars: 32
Watchers: 4
Forks: 5
Open Issues: 2
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: 5.0.*
- satooshi/php-coveralls: ~0.6.0
- squizlabs/php_codesniffer: ~2.0
This package is not auto-updated.
Last update: 2025-01-24 23:46:44 UTC
README
Validation library for PHP 5.6+ / PHP 7 / HHVM inspired by Joi from Hapi.
Installation
The recommended way to install the library is through Composer
composer require bartosz-maciaszek/validation
Examples
Validation with the library is straightforward. You can validate primitives like this:
<?php use Validation\Validation as V; V::validate('foobar', V::string(), function($err, $output) { if ($err) { echo 'Validation failed: ' . $err; exit; } echo $output; // 'foobar' });
You can also chain other assertions:
V::validate('user@example.com', V::string()->email(), function($err, $output) { // ... });
The library also supports transformations:
V::validate('FooBar', V::string()->lowercase(), function($err, $output) { // $output equals 'foobar'! });
Wanna something more complex? Let's try to validate an array!
$input = [ 'username' => 'foobar', 'password' => 'secret123', 'birthyear' => 1980, 'email' => 'foobar@example.com', 'sex' => 'male' ]; $schema = V::arr()->keys([ 'username' => V::string()->alphanum()->min(3)->max(30), 'password' => V::string()->regex('/[a-z-A-Z0-9]{3,30}/'), 'birthyear' => V::number()->integer()->min(1900)->max(2013), 'email' => V::string()->email(), 'sex' => V::string()->valid('male', 'female') ]); V::validate($input, $schema, function ($err, $output) { // $err === null -> valid! });
Documentation can be found here (please note it's not 100% completed :)).
Tests
To run the unit test, simply install the dependencies and invoke make test
$ make deps
$ make test
Contributing
Contributions are welcome. If you want to help, please fork the repo and submit a pull request. To maintain the coding style, please make sure your code complies with PSR2 standard.
$ make cs