■バリデート
IPアドレスかどうか判定するには以下のようにする。
<?php require_once 'Zend/Validate/Ip.php'; $validator = new Zend_Validate_Ip(); if($validator->isValid('192.168.1.1')){ //this is an IP address. } else{ //this is not an IP address. }
指定された範囲にあるかどうかを判定するには以下のようにする。
<?php require_once 'Zend/Validate/Between.php'; $validator = new Zend_Validate_Between(10, 20); if($validator->isValid(15)){ //this is in the range. } else{ //this is not in the range. }
■メッセージの設定と取得
以下のようにバリデータオブジェクトにメッセージを付加することができる。
<?php require_once 'Zend/Validate/Between.php'; $validator = new Zend_Validate_Between(10, 20); $valiidator->setMessage('%value% is not in the range.'); if($validator->isValid(35)){ //this is in the range. } else{ $msg = $validator->getMessages(); echo $msg[0];//35 is not in the range. }
■バリデータチェーン
以下のようにして複数のバリデートを1つに扱うことができる。
<?php require_once 'Zend/Validate.php'; require_once 'Zend/Validate/NotEmpty.php'; require_once 'Zend/Validate/Alpha.php'; require_once 'Zend/Validate/StringLength.php'; $validator_emp = new Zend_Validate_NotEmpty(); $validator_alp = new Zend_Validate_Alpha(); $validator_str = new Zend_Validate_StringLength(4, 10); $validator_emp->setMessage('アカウント名が入力されていません。'); $validator_alp->setMessage('アカウント名は半角英数字のみで入力してください。'); $validator_str->setMessage('アカウント名は4~10文字で入力してください。'); $validChain = new Zend_Validate(); $validChain->addValidator($validator_emp, true)->addValidator($validator_alp)->addValidator($validator_str); if(!$validChain->isValid($name)){ $messages = $validChain->getMessages(); foreach($messages as $msg){ echo $msg; } }
各コンポーネントについて
- Zend_Validate_Alnum([bool $allowWhiteSpace = false])
- 英数字のみで構成されているか判定する。引数がtrueのときは空白を許可する。
- Zend_Validate_Apha([bool $allowWhiteSpace = false])
- アルファベットのみで構成されているか判定する。引数がtrueのときは空白を許可する。
- Zend_Validate_Between(int $min, int $max[, bool $inclusive = true])
- 指定された範囲内かどうか判定する。第三引数がfalseのとき、境界値は含まない。
- Zend_Validate_Ccnum()
- クレジット番号として適当かどうか判定する。
- Zend_Validate_Date([string $format = ‘YYYY-MM-DD'[, string $locate]])
- 日付として正しい形式か判定する。
- Zend_Validate_Int()
- 整数型か判定する。
- Zend_Validate_Float()
- 浮動小数点型か判定する。
- Zend_Validate_InArray(mixed $value, array $haystack[, bool $strict = false])
- 設定した配列の中に指定のキーが存在するか判定する。第三引数がtrueのとき型の一致も判定する。
- Zend_Validate_EmailAddress([$allow[, $validateMx[, $hostnameValidator]]])
- メールアドレスとして適当か判定する。標準ではDNSのホスト名として正しいアドレスであるかを調べる。
- Zend_Validate_HostName([$allow[, $validateIdn[, $validateTld[, $ipValidator]]]])
- ホスト名として適当か判定する。標準ではDNSホスト名として有効かのみ調べる。
- Zend_Validate_Ip()
- IPアドレスとして適当か判定する。
- Zend_Validate_Regex(string $pattern)
- 設定した正規表現にマッチするか判定する。
クレジット番号のような判定には便利だがPHPの関数のエイリアスのようなものはいかがであろう。。。
各メソッドについて
- Zend_Validate_[TYPE]::isValid(mixed $subject)
- 引数が適合しているか判定する。
- Zend_Validate_[TYPE]::setMesssage(string $msg[, $error_code])
- メッセージを設定する。
- Zend_Validate_[TYPE]::getMesssages()
- メッセージを取得する。
- Zend_Validate::addValid(object $validator[, bool $stop = false])
- Zend_Validateオブジェクトにバリデータを付加する。第二引数でtrueを指定すると適合しなかった場合に残りの処理を行わない。
Zend Frameworkのrequire_onceがJavaのimportみたいで気持ちいい。