Chapitre 33. Zend_Validate

Table des matières

33.1. Introduction
33.2. Chaînes de validation
33.3. Ecrire des validateurs
33.4. Validation d'une adresse email
33.5. Validation des noms de domaine

33.1. Introduction

Le composant Zend_Validate fournit un ensemble de validateurs fréquemment utiles. Il fournit également un mécanisme simple de chaînage permettant d'appliquer de multiples validateurs à une donnée dans un ordre défini par l'utilisateur.

Qu'est-ce qu'un validateur ?

Un validateur examine ce qui lui est soumis suivant certaines règles et retourne un résultat booléen, si la donnée est conforme aux exigences. Si ce n'est pas le cas, un validateur peut de manière optionnelle fournir des informations concernant la ou les règle(s) non remplie(s).

Par exemple, une application web peut réclamer qu'un identifiant comprennent entre six et douze caractères et ne contiennent que des caractères alphanumériques. Un validateur peut être utilisé pour s'assurer que les identifiants remplissent ces règles. Si un identifiant donné ne respecte pas l'une ou plusieurs de ces règles, il sera utile de savoir laquelle ou lesquelles en particulier.

Le fait de définir une validation de cette manière fournit les fondations pour Zend_Validate_Interface qui définit deux méthodes, isValid() et getMessages(). La méthode isValid() réalise la validation à partir de la donnée fournie et retourne true si et seulement si celle-ci passe avec succès les critères de validation. Si isValid() retourne false, getMessages() peut retourner un tableau de messages explicitant la ou les raison(s) de l'échec de la validation.

[Note] Note

getMessages() fournit seulement les messages d'échec de validation concernant le dernier appel à isValid(), puisque isValid() efface tous les messages précédents pouvant provenir d'un appel antérieur de cette même méthode.

L'exemple suivant illustre la validation d'une adresse email :

<?php
require_once 'Zend/Validate/EmailAddress.php';
$validateur = new Zend_Validate_EmailAddress();
if ($validateur->isValid($email)) {
    // l'email est valide
} else {
    // l'email est invalide ; affichons pourquoi
    foreach ($validateur->getMessages() as $message) {
        echo "$message\n";
    }
}
?>