Download the PHP package phpdot/validator without Composer
On this page you can find all versions of the php package phpdot/validator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download phpdot/validator
More information about phpdot/validator
Files in phpdot/validator
Package validator
Short Description Strict, type-safe validation with structured error codes for the PHPdot ecosystem.
License MIT
Informations about the package validator
phpdot/validator
Strict, type-safe validation that speaks phpdot/error: every rule
failure is a structured error code, so validation errors flow through the same ErrorBag as the rest of
your application — one output shape everywhere. Rules are objects, bound to your domain error codes, and
the factory threads any registered message translator into the bag automatically.
Table of Contents
- Requirements
- Installation
- Usage
- Architecture
- Testing
- License
Requirements
| Requirement | Constraint |
|---|---|
| PHP | >= 8.5 |
ext-mbstring |
* |
phpdot/error |
^0.2 |
phpdot/container is a dev-only suggestion for auto-wiring ValidatorFactory.
Installation
Usage
Each rule is bound to one of your domain error codes with withError(). Create a fresh Validator per
validation session from the injected factory:
$errors is a phpdot/error ErrorBag — the same value your controllers, services, and responders
already handle.
Message params
Every rule contributes ICU arguments to the message it triggers: {field} always, plus its own bounds
— Min gives {min}, Between gives both. So a translation names the limit instead of repeating it:
withError() takes them explicitly, and they override the rule's own. State them there when the
message should not depend on which key a rule happens to expose — or when the rule cannot describe
itself at all, a closure above all:
Since they win, the same constant belongs on both sides — new Between(1, self::CODE_MAX) with
['max' => self::CODE_MAX] — or the message will announce a limit the rule doesn't enforce.
Auto-wired with DI
Inject ValidatorFactory and call create() per validation. The factory threads any registered
MessageTranslatorInterface into the bag, so your services never import the translator:
Accumulating across payloads
Reuse one validator across several validate() calls; errors accumulate into one bag:
The rule set covers presence, type, size, format, choice, cross-field comparison, date, and closure
rules; implement the Rule contract for your own.
Architecture
ValidatorFactory builds a Validator (wiring in the translator). validate() runs each field's rules
against the input inside a ValidationContext (which exposes sibling fields for cross-field rules); a
failing rule contributes its bound error code to the ErrorBag from phpdot/error.
Testing
License
MIT.
This repository is a read-only mirror, generated by CI from phpdot/monorepo. Pull requests and issues belong in the monorepo.