33.3. Pisanie walidatorów

Zend_Validate zapewnia zestaw najczęściej potrzebnych walidatorów, ale programiści często potrzebują napisać własne walidatory dla ich szczególnych zastosowań. Zadanie pisania własnego filtru jest ułatwione przez implementację interfejsu Zend_Validate_Interface.

Interfejs Zend_Validate_Interface definiuje dwie metody, isValid() oraz getMessages(), które mogą być zaimplementowane przez klasę użytkownika. Obiekt, który implementuje ten interfejs może być dodany do łańcucha walidatorów za pomocą metody Zend_Validate::addValidator().

Poniższy przykład demonstruje w jaki sposób może być napisany własny walidator:

<?php

require_once 'Zend/Validate/Interface.php';

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

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

        // ustalamy wartość zmiennej $requirement opartej na kryteriach walidacji

        if (!$requirement) {
            $this->_messages[] = "Reason validation failed";
            return false;
        }

        return true;
    }

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

?>

Aby dodać instancję powyższego walidatora do łańcucha walidatorów:

<?php

$validatorChain = new Zend_Validate();
$validatorChain->addValidator(new MyValidator());

?>