#Sirius Validation
Sirius Validation is a library for data validation. It offers:
- validator object to validate arrays,
ArrayObjects
or objects that have atoArray
method. It can be extended easily to validate other types. - value validator object to validate single values
- validation helper to simplify single value validation (does not generate error messages, only returns TRUE/FALSE)
- build-in validation rules to perform the actual data validation. The validation rules are used by the helper and validator objects.
Out-of-the-box, the library can handle array
s, ArrayObject
s and objects that have implemented the toArray
method.
In order to validate other data containers you must create a DataWrapper
so that the validator be able to extract data from your object.
##Elevator pitch
$validation = new \Sirius\Validation\Validator;
// add a validation rule
$validator->add('title', 'required');
// add a rule that has a list of options
$validator->add('title', 'maxlength', array('max' => 100));
// or use JSON
$validator->add('title', 'maxlength', '{"max": 100}');
// or a URL query string
$validator->add('title', 'maxlength', 'max=100');
// add a rule with a custom error message
$validator->add('title', 'maxlength', 'max=100', 'Article title must have less than {max} characters');
// add a rule with a custom message and a label (very handy with forms)
$validator->add('title', 'maxlength', 'max=100', '{label} must have less than {max} characters', 'Title');
// add all of rule's configuration in a string (you'll see later why it's handy')
$validator->add('title', 'maxlength(max=255)({label} must have less than {max} characters)(Title)');
// add multiple rules at once (separate using [space][pipe][space])
$validator->add('title', 'required | maxlength(max=255) | minlength(min=10)');
// add all your rules at once
$validator->add(array(
'title' => 'required | maxlength(max=10)({label} must have less than {max} characters)(Title)',
'content' => 'required',
'source' => 'website'
));
// add nested rules
$validator->add('recipients[*]', 'email'); //all recipients must be valid email addresses
$validator->add('shipping_address[city]', 'MyApp\Validator\City'); // uses a custom validator to validate the shipping city
##Documentation
- Added HHVM to Travis CI
- Renamed Validator* classes into Rule* classes (breaking change if you used custom rule classes)
- Renamed ValidatorFactory to RuleFactory (breaking change)