jardissupport / validation
A flexible validation package for Domain-Driven Design with nested aggregates
Installs: 27
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/jardissupport/validation
Requires
- php: >=8.2
- jardisport/validation: ^1.0
Requires (Dev)
- phpstan/phpstan: ^2.0.4
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.11.2
This package is auto-updated.
Last update: 2026-02-25 17:32:18 UTC
README
Part of the Jardis Ecosystem — A modular DDD framework for PHP
Validate complex object graphs without annotations, without interfaces, without magic. Use type-safe, reusable validators with an elegant fluent API — perfect for DDD aggregates, value objects, and nested entities.
Features
- Recursive Object Graph Validation — Automatically traverses nested objects and collections
- 20+ Production-Ready Validators — Email, IBAN, UUID, PhoneNumber, CreditCard, Range, and more
- Fluent API with Static Factories — Type-safe configuration via
Email::strict(),Uuid::v4(),Iban::sepa() - Circular-Reference Protection — Prevents infinite loops in cyclic object structures
- No Interface Constraints — Validates arbitrary domain objects without interface requirements
- Minimal Dependencies — Only PSR interfaces, optimized for performance
Installation
composer require jardissupport/validation
Quick Start
use JardisSupport\Validation\{ObjectValidator, ValidatorRegistry, CompositeFieldValidator}; use JardisSupport\Validation\Validator\{NotBlank, Email, Range}; class User { public function __construct( private ?string $email = null, private ?int $age = null ) {} public function Email(): ?string { return $this->email; } public function Age(): ?int { return $this->age; } } $userValidator = (new CompositeFieldValidator()) ->field('email')->validates(NotBlank::class) ->validates(Email::class, Email::withDnsCheck()) ->field('age')->validates(Range::class, Range::between(18, 120)); $validator = new ObjectValidator( (new ValidatorRegistry())->register(User::class, $userValidator) ); $result = $validator->validate(new User('invalid', 15)); if (!$result->isValid()) { print_r($result->getErrors()); }
Documentation
Full documentation, examples and API reference:
-> jardis.io/docs/support/validation
Jardis Ecosystem
This package is part of the Jardis Ecosystem — a collection of modular, high-quality PHP packages designed for Domain-Driven Design.
| Category | Packages |
|---|---|
| Core | Kernel, Entity, Workflow |
| Support | DotEnv, Cache, Logger, Messaging, DbConnection, DbQuery, DbSchema, Validation, Factory, ClassVersion |
| Generic | Auth |
| Tools | Builder, Migration, Faker |
License
This package is licensed under the PolyForm Noncommercial License 1.0.0.
For commercial use, see COMMERCIAL.md.