@blog.justoneplanet.info

日々勉強

ZendFramework Zend_Validate(バリデート)

■バリデート

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みたいで気持ちいい。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment