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());