第33章 Zend_Validate

目次

33.1. 導入
33.2. バリデータチェイン
33.3. バリデータの書き方
33.4. メールアドレスの検証
33.5. ホスト名の検証

33.1. 導入

Zend_Validate コンポーネントは、一般的に必要となるバリデータを提供します。 シンプルなバリデータチェイン機能も持っており、 ひとつのデータに対して複数のバリデータを指定した順に適用することができます。

バリデータとは?

バリデータは、入力が何らかの要件を満たしているかどうかを調べ、 結果を boolean 値で返します。これは、入力が要件を満たしているかどうかを表します。 入力が要件を満たさなかった場合、バリデータは その入力がどのように要件を満たさなかったのかについての追加情報も提供します。

たとえば、あるウェブアプリケーションでは 「ユーザ名は 6 文字から 12 文字、かつ英数字のみが使用可能」 という要件があるものとします。 このような場合に入力がそれを満たしているかどうかを調べるために バリデータを使用できます。 選択したユーザ名がいずれかひとつあるいは両方の要件を満たしていない場合に、 どちらの条件に反していたのかを知ることができるので便利です。

ここで考えたバリデータについての定義をもとにして Zend_Validate_Interface が作成されました。これは、 isValid() および getMessages() のふたつのメソッドを定義するものです。 isValid() メソッドは指定した値に対する検証を行います。 値が検証条件を満たしている場合にのみ true を返します。 isValid()false を返した場合、 getMessages() がメッセージの配列を提供します。 ここには検証が失敗した理由が含まれます。

[注意] 注意

getMessages() が返す検証エラーメッセージは、 直近の isValid() コールに関するもののみです。 isValid() をコールすると、それまでに実行された isValid() によるメッセージはすべて消去されます。

以下の例では、電子メールアドレスの検証方法を説明します。

<?php

require_once 'Zend/Validate/EmailAddress.php';
$validator = new Zend_Validate_EmailAddress();
if ($validator->isValid($email)) {
    // email は妥当な形式です
} else {
    // email は無効な形式です。理由を表示します
    foreach ($validator->getMessages() as $message) {
        echo "$message\n";
    }
}

?>