値の検証を楽にしてくれるDataValidator_SimpleというPHPクラスを作った

これもだいぶ昔に作ったやつなんですが、処理とドキュメントをちょこちょこっと手直ししたので公開します。


DataValidator_Simple-0.02.tar.gz


いわゆるPerlのFormValidator::SimpleのPHP版と思ってもらって結構です。

使い方は至って簡単

<?php

require_once 'DataValidator/Simple.class.php';

$valid =& new DataValidator_Simple();

// プラグインロードして・・・
$valid->load_plugin(array('Standard'));

// チェックの定義をして・・・
$valid->add_check_table(array(
    'name'    , array('NOT_NULL',array('LENGTH',1,50)),
    'mail'    , array('NOT_NULL','MOBILE_MAIL',array('LENGTH',1,128)),
    'pass'    , array('NOT_NULL',array('ALPHANUMS',1,8)),
    're_pass' , array('NOT_NULL',array('ALPHANUMS',1,8)),
    array( 'pass_eq'  , array('pass','re_pass')     ) , array('DUPLICATION'),
    array( 'birthday' , array('year','month','day') ) , array('DATE')
));

// 検証したい値を突っ込んで・・・
$valid->add_data( array(
	'name'    => 'ittetsu',
	'mail'    => 'hoge@example.com',
	'pass'    => '123456789',
	're_pass' => '123456789',
	'year'    => '2007',
	'month'   => '10',
	'day'     => '19',
) );

// validateを呼ぶだけ!
$result =& $valid->validate();

// エラーがあったか?
if ( $result->has_error() ) {

    // nameにエラーがあるか?
    if ( $result->is_error('name') ) {
        print '名前に誤りがあります。';
    }
}

とまあこんな感じでおます。

FormValidator::Simpleのcheck()のような動きをするメソッドも提供しています。

<?php

$valid =& new DataValidator_Simple();

$valid->load_plugin(array('Standard'));

$result =& $valid->check($cgi,array(
    'name'    , array('NOT_NULL',array('LENGTH',1,50)),
    'mail'    , array('NOT_NULL','MOBILE_MAIL',array('LENGTH',1,128)),
    'pass'    , array('NOT_NULL',array('ALPHANUMS',1,8)),
    're_pass' , array('NOT_NULL',array('ALPHANUMS',1,8)),
    array( 'pass_eq'  , array('pass','re_pass')     ) , array('DUPLICATION'),
    array( 'birthday' , array('year','month','day') ) , array('DATE')
));

こんな感じですね。

checkの第一引数に$cgiというのを渡していますが、これはPerlCGI.pmのparamメソッドのような動作をするオブジェクトを期待しています。

ちなみにmessageの機能はありません。いずれ実装するかも・・・。

細かい説明は各クラスに書いていますのでそちらを参照してください。って言っても不完全なドキュメントなんで意味不明な部分も多いかもしれませんが^^;