入力チェッククラス − 未入力チェック
こんにちは、今日は仕事納めということで、年内最後の総仕上げに追われているジャクサーです(;`д´)
先日は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
{
〜〜 何かエラー処理 〜〜
}
という感じになりますね。