mirror of
https://github.com/Respect/Validation.git
synced 2024-06-22 07:16:32 +02:00
library | ||
tests | ||
.gitignore | ||
README.textile |
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?