33.3. 写校验器

尽管提供了一组通用的校验器,但不可避免地,开发者还将为他们特定的需求来写定制的校验器。通过实现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();

        // arrive on $requirement based on validation criteria

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

?>