Respect/Validation pour PHP : guide complet avec exemples
Respect/Validation est une bibliothèque de validation de données puissante et élégante pour PHP. Contrairement aux fonctions PHP natives (comme filter_var ou les expressions régulières), Respect/Validation propose une interface orientée objet et chaînable (fluent) pour construire des règles de validation complexes. La bibliothèque permet de créer des vérifications lisibles et auto-documentées, faciles à maintenir et à étendre.
Pourquoi utiliser cette bibliothèque ? Dans toute application web, il est nécessaire de vérifier les saisies utilisateur : email, mots de passe, URL, adresses IP, dates, plages numériques, etc. Sans système de validation, le code se transforme rapidement en un enchevêtrement de if-else et d'expressions régulières. Respect/Validation résout ce problème en fournissant plus de 100 règles prêtes à l'emploi (validateurs) que vous pouvez combiner pour créer des chaînes de vérification complexes. La bibliothèque prend également en charge les messages d'erreur personnalisés dans différentes langues, ce qui en fait un choix idéal pour les projets internationaux.
La fonctionnalité clé est le chaînage de validation. Vous pouvez enchaîner plusieurs règles en une seule chaîne, et elles seront appliquées séquentiellement. Si au moins une règle échoue, la validation s'arrête (par défaut) et une erreur est renvoyée. Cela permet d'écrire un code compact mais très expressif.
Installation
L'installation se fait via Composer, le gestionnaire de paquets standard pour PHP. Exécutez la commande suivante dans le terminal à la racine de votre projet :
composer require respect/validation
Après l'installation, incluez l'autoloader de Composer dans votre fichier PHP :
require_once 'vendor/autoload.php';
Démarrage rapide
Un exemple minimal pour valider un email et un mot de passe :
use Respect\Validation\Validator as v;
$email = 'user@example.com';
$password = 'StrongP@ss1';
// Création d'une chaîne de validation
$validator = v::email()->length(6, 100)->notEmpty();
if ($validator->validate($email)) {
echo "Email valide !";
} else {
// Récupération du tableau d'erreurs
$errors = $validator->getMessages();
print_r($errors);
}
// Validation du mot de passe
$passwordValidator = v::alnum()->noWhitespace()->length(8, 32);
if ($passwordValidator->validate($password)) {
echo "Mot de passe valide !";
}
Dans cet exemple, v::email() vérifie le format de l'email, length(6, 100) contrôle la longueur de la chaîne, et notEmpty() s'assure que la valeur n'est pas vide. Toutes les règles sont enchaînées.
Méthodes et classes principales
Voici 8 méthodes (règles) essentielles de la bibliothèque. Chaque règle est une méthode statique de la classe Respect\Validation\Validator (généralement importée sous le nom v).
1. v::email()
Signature : public static function email(): Validator
Fonction : Vérifie si la valeur est une adresse email valide selon les RFC 5321/5322.
Exemple :
$validator = v::email();
var_dump($validator->validate('test@test.com')); // true
var_dump($validator->validate('pas-un-email')); // false
2. v::alnum()
Signature : public static function alnum(string $additionalChars = ''): Validator
Fonction : Vérifie si la chaîne contient uniquement des lettres (a-z, A-Z) et des chiffres (0-9). Vous pouvez passer des caractères supplémentaires autorisés.
Exemple :
$validator = v::alnum();
var_dump($validator->validate('abc123')); // true
var_dump($validator->validate('bonjour le monde')); // false (espace non autorisé)
// Avec caractères supplémentaires
$validatorWithDash = v::alnum('-');
var_dump($validatorWithDash->validate('mon-nom')); // true