mini\Validator\Validator
class
Documentation
Composable validation builder
Build reusable validators that can be composed for complex validation scenarios. Inspired by JSON Schema, validators are permissive by default and rules are added incrementally.
Basic Usage
// Simple field validator with fluent API
$emailValidator = (new Validator())->required()->email();
if ($error = $emailValidator->isInvalid($_POST['email'])) {
echo "Error: $error";
}
Entity Validation
class User {
public static function validator(): Validator {
return (new Validator())
->forProperty('username',
(new Validator())->isString()->required()->minLength(3))
->forProperty('email',
(new Validator())->required()->email())
->forProperty('age',
(new Validator())->isInt()->minVal(18));
}
}
// Direct field validation
if ($error = User::validator()->username->isInvalid($_POST['username'])) {
echo "Username error: $error";
}
// Full entity validation
$errors = User::validator()->validate($_POST);
if ($errors) {
// ['username' => Translatable, 'email' => Translatable, ...]
}
Composition & Reusability
// Define reusable validators
$emailValidator = (new Validator())->required()->email();
$passwordValidator = (new Validator())->required()->minLength(8);
// Compose into entity validator
$userValidator = (new Validator())
->forProperty('email', $emailValidator)
->forProperty('password', $passwordValidator);
// Partial validation (returns clone)
$profileValidator = User::validator()->withoutFields(['password']);
Design Philosophy
- Permissive by default: Empty validator accepts any value
- Non-smart: Doesn't prevent contradictory rules (e.g.,
isInt()->isString()) - Fail fast: Returns first error for field validation
- Nullable aware: Optional fields skip validation when empty
- Lazy translation: Error messages (Translatable) aren't converted until displayed
Inheritance
Implements:
JsonSerializable
Properties (7)
array $rules
array $propertyValidators
array $patternPropertyValidators
bool $allowAdditionalProperties
bool $isRequired
Stringable|string|null $requiredMessage
Methods (54)
Magic property access for field validators
Invokable: $validator($value)
Check if value is invalid
Validate a single rule
Validate entire structure (alias for isInvalid)
Mark field as required
Set a rule immutably (clones before mutation)
Set JSON Schema type(s)
Validate string format (JSON Schema: format)
Validate minimum string length
Validate maximum string length
Validate exact value match (JSON Schema: const)
Validate value is in allowed list (JSON Schema: enum)
Validate minimum value (inclusive) - JSON Schema: minimum
Validate maximum value (inclusive) - JSON Schema: maximum
Validate minimum value (exclusive) - JSON Schema: exclusiveMinimum
Validate maximum value (exclusive) - JSON Schema: exclusiveMaximum
Validate number is a multiple of value (JSON Schema: multipleOf)
Validate minimum array length (JSON Schema: minItems)
Validate maximum array length (JSON Schema: maxItems)
Validate minimum number of object properties (JSON Schema: minProperties)
Validate maximum number of object properties (JSON Schema: maxProperties)
Validate dependent required properties (JSON Schema: dependentRequired)
Validate array has unique items (JSON Schema: uniqueItems)
Validate all array items against a schema (JSON Schema: items)
Validate additional items beyond tuple schema (JSON Schema: additionalItems)
Validate minimum number of items matching a schema (JSON Schema: minContains)
Validate maximum number of items matching a schema (JSON Schema: maxContains)
Validate value matches regex pattern
Validate against any of the provided validators (JSON Schema: anyOf)
Validate against all of the provided validators (JSON Schema: allOf)
Validate against exactly one of the provided validators (JSON Schema: oneOf)
Validate that value does NOT match validator (JSON Schema: not)
Custom validation callback (for server-side validation only)
Add validator for object property or array key
Define validators for multiple properties (JSON Schema: properties)
Validate properties matching regex patterns (JSON Schema: patternProperties)
Validate additional properties (JSON Schema: additionalProperties)
Remove fields from validation
Keep only specified fields for validation
Check if a value is object-like (PHP object or associative array)
Validate using custom closure
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Documentation missing
Export validator as JSON Schema (JsonSerializable interface)