dariorieke / validation
PHP library to validate data structures
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Forks: 0
pkg:composer/dariorieke/validation
Requires (Dev)
This package is auto-updated.
Last update: 2025-10-20 07:46:32 UTC
README
php library for validating data structures
Installation
install via composer
    "require": {
        "dariorieke/validation": "dev-master"
    }
Tests
run tests with the following command inside the repositories root:
./vendor/bin/phpunit  .\tests
Usage
Usage with plain data structures
- obtain a validator instanceuse DarioRieke\Validation\ValidatorFactory;
$validatorFactory = new ValidatorFactory(); $validator = $validatorFactory->getValidator();
2. set a schema to validate the data against with constraints which describe the structure
use DarioRieke\Validation\Schema; use DarioRieke\Validation\Constraint\Type; use DarioRieke\Validation\Constraint\AllowedChildren; use DarioRieke\Validation\Constraint\Email; use DarioRieke\Validation\Constraint\NotNull;
// we expect an object with 3 properties $schema = new Schema(
new Type('object'), 
new AllowedChildren([ 'name', 'phone', 'email'])
);
// the email property is mandatory and must be a valid email address $schema->addChild('email', new Schema(
new Email(), 
new NotNull()
));
3. validate a given data structure
$data = (object) []; $data->email = "valid@email.com";
$violations = $validator->validate($data);
if(count($violations) > 0) {
foreach ($violations as $violation) {
	echo $violation->getPath();
	echo $violation->getMessage();
}
} else {
//data is valid and can be processed safely
}
### Usage with an object implementing ValidatableInterface
if you want to validate instances of your classes, you can implement the `ValidatableInterface` to store the validation logic inside the class.
This even works with nested properties which implement the `ValidatableInterface`, just add the `Valid` constraint to it.
`ValidatableInterface::getValidationSchema(): SchemaInterface` provides the schema to validate against. 
use DarioRieke\Validation\ValidatableInterface; use DarioRieke\Validation\SchemaInterface; use DarioRieke\Validation\Schema;
/**
- testclass to validate / class Testclass implements ValidatableInterface { /* - @var self */ public $public;
 - protected $protected = null; - private $private = 'private'; - public function __construct($protected) { - $this->protected = $protected;- } - public function getValidationSchema(): SchemaInterface { - $schema = new Schema(); $schema->addChild('protected', new Schema(new Required, new Email)); $schema->addChild('public', new Schema(new Required, new Valid)); $schema->addChild('private', new Schema(new Required)); return $schema;- } }