33.3. Написание валидаторов

Zend_Validate предоставляет набор наиболее часто используемых валидаторов, но разработчики часто сталкиваются с такими ситуациями, когда требуется написание своих валидаторов. Написание своих валидаторов облегчается реализацией интерфейса Zend_Validate_Interface.

Zend_Validate_Interface определяет два метода: isValid() и getMessages(), которые могут быть реализованы своими классами. Объект, реализующий данный интерфейс, может быть добавлен в цепочку валидаторов через метод Zend_Validate::addValidator().

Следующий пример демонстрирует, как можно писать свои валидаторы:

<?php

require_once 'Zend/Validate/Interface.php';

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

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

        // нахождение результата проверки $requirement

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

        return true;
    }

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

?>

Добавление экземпляра только что написанного класса валидатора в цепочку валидаторов:

<?php

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

?>