respect-validation/docs/getting-started.md
Henrique Moody 098c973a2a
Add GitHub action to lint documentation files
When we make changes to the category of a validator, it's easy to forget
to update overall list of validators. This commit a GitHub actions that
will run a console command to check if the documentation it up-to-date.

The job will fail when we need to change the document, but the console
command will fix the issues, so there isn't a lot of friction there.
2026-01-13 23:37:05 -07:00

2.3 KiB

weight
-100

Getting Started

Welcome to Respect\Validation!

This guide will help you get up and running with the library quickly.

Installation

To install Respect\Validation, use Composer:

composer require respect/validation:^3.0

Ensure you have PHP 8.5 or above installed.

Basic usage

The ValidatorBuilder (aliased as v for convenience) provides a fluent interface for building validators and running them.

Validating using exceptions

The assert() method throws an exception when validation fails. Handle these exceptions with try/catch for robust error handling:

try {
    v::intType()->assert($input);
} catch (Throwable $exception) {
    echo 'Validation failed: ' . $exception->getMessage();
}

Validating without exceptions

The validate() method returns a ResultQuery object that allows you to inspect and display validation results:

$result = v::intType()->validate($input);
if (!$result->isValid()) {
    echo 'Validation failed: ' . $result->getMessage();
}

Validating using booleans

Use the isValid() method to check if your input meets specific validation criteria:

if (!v::intType()->isValid($input)) {
    echo 'The input you gave me is not an integer';
}

Key Features

Complex validation

Combine multiple validators for complex validation rules:

v::numericVal()->positive()->between(1, 255)->assert($input);

Custom error messages

Define your own error messages when validation fails:

v::between(1, 256)->assert($input, '{{subject}} is not what I was expecting');

Custom exceptions

Throw your own exceptions when the validation fails:

try {
    v::between(1, 256)->assert($input, new DomainException('Not within the expected range'));
} catch (DomainException $exception) {
    echo 'Custom exception caught: ' . $exception->getMessage();
}

Reusing validators

Create validators once and reuse them across multiple inputs:

$validator = v::alnum()->lowercase();

$validator->assert('respect');
$validator->assert('validation');

Next steps