mirror of
https://github.com/Respect/Validation.git
synced 2024-06-27 17:50:13 +02:00
95 lines
2.6 KiB
Plaintext
95 lines
2.6 KiB
Plaintext
h2. About
|
|
|
|
Respect\Validation aims to be the most awesome validation toolkit ever created. Featuring:
|
|
|
|
* Fluent Interfaces
|
|
* Chain Validation
|
|
* Composite validation (one of, all of, most of, at least N of, none of, etc...)
|
|
* Extensibility (create your own validators using the same engine)
|
|
* Solid objects for raw instantiation (tests, dependency injection, etc...)
|
|
* Informative, usable exceptions
|
|
* IDE autocomplete-readiness
|
|
|
|
Here some nice little things you can do using it:
|
|
|
|
h3. Namespace import:
|
|
|
|
<pre> use Respect\Validation\Validator as v;</pre>
|
|
|
|
h3. Simple validation
|
|
|
|
<pre> v::numeric()->validate($someNumber); </pre>
|
|
|
|
h3. Chained validation
|
|
|
|
<pre>//From 1 to 15 non-whitespace alphanumeric characters
|
|
$username = 'alganet';
|
|
$validUsername = v::alnum()
|
|
->noWhitespace()
|
|
->stringLength(1,15)
|
|
->validate($username);
|
|
</pre>
|
|
<pre>
|
|
//Date between two ranges using a specific format
|
|
$someDate = '2010-10-15';
|
|
$validDate = v::date('Y-m-d')
|
|
->dateBetween('2009-01-01', 2011-01-01')
|
|
->validate($someDate);</pre>
|
|
|
|
h3. Validating object attributes
|
|
|
|
<pre>$user = new \stdClass;
|
|
$user->name = 'Alexandre';
|
|
$user->birthdate = '1987-07-01';
|
|
$validUser = v::all(
|
|
v::hasAttribute('name', v::stringNotEmpty()),
|
|
v::hasAttribute('birthdate, v::date('Y-m-d'))
|
|
);</pre>
|
|
|
|
h3. Combining rules (v::one, v::all, v::atLeast, v::most)
|
|
|
|
<pre>$validDate = v::one(
|
|
v::date('Y-m-d'),
|
|
v::date('y-m-d'), //two-digit year
|
|
v::date('d/m/Y')
|
|
);</pre>
|
|
|
|
h3. Compositing rules
|
|
|
|
<pre>//Must satisfy at least two of the three conditions:
|
|
//a) A numeric or alphanumeric value
|
|
//b) A date in the format Ymd (20091009)
|
|
//c) A string between 3 and 12 characters without whitespace
|
|
$valid = v::atLeast(2, array(
|
|
v::one(v::numeric(), v::alnum()),
|
|
v::date('Ymd'),
|
|
v::stringLength(3,12)->noWhitespace()
|
|
));</pre>
|
|
|
|
h3. Cool, informative exceptions:
|
|
|
|
<pre>try {
|
|
$username = '#$% #odjfubgihdbfgihbdfighb';
|
|
$validUsername = v::alnum('_')
|
|
->noWhitespace()
|
|
->stringLength(1,15)
|
|
->assert($username);
|
|
} catch(v\Exceptions\InvalidException $e) {
|
|
/*
|
|
Respect\Validation\Exceptions\InvalidException:
|
|
#$% #odjfubgihdbfgihbdfighb does not contains only letters and digits (including _)
|
|
#$% #odjfubgihdbfgihbdfighb contains spaces, tabs, line breaks or other not allowed charaters.
|
|
#$% #odjfubgihdbfgihbdfighb exceeds the maximum of 15 characters
|
|
*/
|
|
echo $e->getMessage();
|
|
}</pre>
|
|
|
|
h3. Non-fluent interface for Dependency Injection maniacs
|
|
|
|
<pre>$validator = new v\Rules\Numeric();
|
|
$validator->validate(123);</pre>
|
|
|
|
Cool, isn't it?
|
|
|
|
|