33.3. Ecrire des validateurs

Zend_Validate fournit un ensemble de validateurs usuels. Inévitablement, les développeurs ont besoin de pouvoir écrire leurs propres validateurs pour des besoins spécifiques. La tâche consistant à écrire des validateurs personnalisés est facilitée en implémentant Zend_Validate_Interface.

Zend_Validate_Interface définit deux méthodes, isValid() et getMessages(), qui peuvent être implémentées par les classes créées. Un objet qui implémente cette interface peut être utilisé comme chaîne de validation via Zend_Validate::addValidator().

L'exemple ci-dessous décrit comment écrire un validateur personnalisé :

<?php
require_once 'Zend/Validate/Interface.php';

class MonValidateur implements Zend_Validate_Interface
{
    protected $_messages = array();

    public function isValid($valeur)
    {
        $this->_messages = array();

        // définition de $requirement sur la base des critères de validation

        if (!$requirement) {
            $this->_messages[] = "Raison de l'échec";
            return false;
        }

        return true;
    }

    public function getMessages()
    {
        return $this->_messages;
    }
}
?>

Pour ajouter une instance de la classe précédente à une chaîne de validation :

<?php
$validateurChaine = new Zend_Validate();
$validateurChaine->addValidator(new MonValidateur());
?>