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

?>