入力チェッククラス − 未入力チェック

こんにちは、今日は仕事納めということで、年内最後の総仕上げに追われているジャクサーです(;`д´)

先日はPHP側の処理での入力チェック共通クラスをやりましたので、
次はその共通クラスを利用して、どのようにしてAjaxに通信を返しているのかをやろうと思ったのですが、
「もうヌルポ」さんからのリクエストがあった、共通クラスの中の1メソッドを1つ作ってみようと思います。

Ajaxとはあまり関係ない、PHPの説明になりますので、
興味のない方は・・・読み飛ばしちゃったください(*´▽`)


はじめに

入力チェックの共通クラスのメソッド例としては、
未入力チェックである、blank()をやってみようと思います。

blank()のソース

何はともあれ、まずはソースを見てみましょう。
blank()に関係あるところだけの抜粋としますね。

<?
class check
{
    private $errMsg;                                        //  エラーメッセージ
    private $errFlg;                                        //  エラー発生状況

    //------------------------------//
    //  コンストラクタ              //
    //  (内部プロパティの初期化)  //
    //------------------------------//
    public function check()
    {                                                       //  コンストラクタ
        $this->errMsg = NULL;                               //  初期化
        $this->errFlg = FALSE;                              //  初期化
    }

    //------------------------------------------------------//
    //  未入力チェック                                      //
    //  $arrValue : チェック対象の値(配列の指定可)        //
    //  $arrName  : エラー発生時の表示用フィールド名        //
    //  $type     : 対象のフィールドが入力式か選択式か      //
    //              の指定(INPUT or SELECT)               //
    //              (デフォルトはINPUT 省略可能)          //
    //------------------------------------------------------//
    //  (指定されたフィールドが入力されているか否かを判定)//
    //  戻り値    : 判定結果    TRUE  → 入力OK             //
    //                          FALSE → 未入力情報あり     //
    //------------------------------------------------------//
    public function blank($arrValue, $arrName , $type="INPUT")
    {                                                       //  入力チェック対象の値、名称、種別
        var $value_chk = FALSE;                             //  チェックフラグを初期化する
        //----------------------//
        //  配列値のチェック    //
        //----------------------//
        if( is_array( $arrValue ))
        {                                                   //  入力チェック対象が配列の場合
            foreach( $arrValue as $value )
            {                                               //  チェック対象数分繰り返して
                if( $value != "" )
                {                                           //  設定項目があれば
                    $value_chk = TRUE;                      //  チェックOK
                }
            }
        }   
        //------------------------------//
        //  配列でない情報のチェック    //
        //------------------------------//
        else
        {                                                   //  入力チェック対象が単数の場合
            if( $arrValue != "" )
            {                                               //  内容が設定してあれば
                $value_chk = TRUE;                          //  チェックOK
            }
        }

        //------------------------------//
        //  エラーメッセージ複数対応    //
        //------------------------------//
        if( !$value_chk )
        {                                                   //  チェックOKにならなかった場合
            if( !strcmp( $type, "INPUT") )
            {
                $message = "を入力してください。";
            }
            else
            {
                $message = "を選択してください。";
            }

            if( is_array( $arrName ))
            {                                               //  表示用の名称が配列の場合
                foreach( $arrName as $value )
                {                                           //  その名称分を出力する
                    $data .= "" . $value. "」か";
                }
                $data .= "のいずれか". $message . "<BR>";
                $this->errMsg .= $data;
            }
            else
            {                                               //  表示用名称が
                $this->errMsg .= "" . $arrName. "". $message . "<br>";
            }
            $this->errFlg = TRUE;                           //  エラーの存在定義
            return FALSE;                                   //  戻り値判定用にFALSE(エラー)を返す
        }
        else
        {
            return TRUE;                                    //  戻り値判定用にTRUE(正常)を返す
        }
    }

    //------------------------------------------------------------------//
    //  エラー状況判定                                                  //
    //  引数 : なし                                                    //
    //------------------------------------------------------------------//
    //  (各種入力チェック処理においてエラーが発生しているか否かを判定)//
    //  戻り値    : 判定結果    TRUE  → エラーはなし                   //
    //                          FALSE → エラーが発生                   //
    //------------------------------------------------------------------//
    public function judgment()
    {
        if( $this->errFlg )
        {                                                   //  エラー設定がある場合
            return FALSE;
        }
        else
        {                                                   //  エラーの設定がない場合
            return TRUE;
        }
    }

}
?>

解説

処理内容としては、入力された値に設定があるかないか、のチェックだけですのでとても簡単な内容です。
それだけでは例としてシンプルすぎると思ったので、
入力フィールドが配列になっている場合でも対応できるようにしてみました。

blank()メソッドに渡すパラメーターは4つ。

引数 説明
$arrValue Array or String 入力チェック対象となる値
$arrName Array or String エラーメッセージ生成時の対象フィールド名
$type String フィールドの種類


前半部分は渡された$arrValueの中に値が設定されているかどうかをチェックします。
値が設定されてればOKということなので、その場合はそのままTRUEを返して終了です。
後半部分は主にエラーメッセージ生成に使っています。
入力値がなかった場合に、配列の場合のエラーメッセージ生成、
配列でない場合のエラーメッセージ生成を行っています。


$this->errMsgはエラーが発生したときのそのエラーメッセージを内部で設定します。
$this->errFlgにはエラーが発生したのかそうでないのかの情報が入っています。
この共通クラスを使う側としては、errFlgの状況によって独自にエラーメッセージを設定してもいいですし、
共通クラス内のエラーメッセージで事足りるのであれば、そのまま使えるという仕様ですね。


まぁ、配列への対応はせず、エラーメッセージも呼び出し元で生成するようにすれば、
このメソッド、数行で終わってしまいますw


ちなみに、このメソッドを使って未入力チェックを行う場合は

$_check = new check();
$_check->blank( $company,"会社名");

if( $_check->judgment() )
{
    〜〜 何か正常処理 〜〜
}
else
{
    〜〜 何かエラー処理 〜〜
}

という感じになりますね。

あとがき

今年1年お付き合いありがとうございました!
自分自身、まだAjaxを勉強し始めたばかり、同然Dojoも使い始めたばかりで、分からないことも多々あります。
サーバー側でやるPHPもまだまだ勉強不足でおかしなところもあったかと思います。(´;ω;`)


今年の更新はこれでひとまずおしまいとなります。
次回は年明けの1月5日更新予定です。

今後とも、お付き合いの程よろしく〜(*´▽`)ノ