PHP:データ検証

これまでプログラミングしたことがある人なら誰でも、入力データをチェックするアルゴリズムを書くのがどれほど面倒で退屈なことか知っていると思います。 プロジェクトごとに使用し、ニーズに合わせて変更および補足できる、独自のベースを組み立てるのに役立つ1つのソリューションを提供したいと思います。

この例はPHPですが、他の言語に簡単に転送できると確信しています。



考え方は、 switchステートメントを使用することです。 つまり、この演算子を使用すると、変数の値を比較し、比較の結果に応じてコードのブロックを実行できます。 たとえば、これの代わりに:

  <?php
 if($ i == 0)
 {
     echo "i is 0";
 }
 elseif($ i == 1)
 {
     echo "i equals 1";
 }
 elseif($ i == 2)
 {
     echo "i equals 2";
 }
 ?> 


書くことができます:

  <?php
スイッチ($ i)
 {
    ケース0:
         echo "i is 0";
        休憩;
    ケース1:
         echo "i equals 1";
        休憩;
    ケース2:
         echo "i equals 2";
        休憩;
 }
 ?> 




ここで、Name(インデックス名)と整数Age(インデックスage)を持つ文字列を含む$ aデータ配列があると想像してください。 このデータはユーザーが入力するため、確認する必要があります。

確認のために、次のクラスがあります。

  <?php
クラスnaughty_checks
 {
     var $ data = array();

     / *クラスコンストラクター、チェック用の入力データの配列* /
    関数naughty_checks($データ)
     {
         $ this-> data = $ data;
     }
    
     / *フィールドの完全性を確認します* /
    関数field_empty($フィールド)
     {
         if(!isset($ this-> data [$ field]))|| strlen(trim($ this-> data [$ field]))== 0)
         {
             trueを返します。
         }
        他に
         {
             falseを返します。
         }
     }
    
     / *フィールドが正の整数かどうかを確認します* /
    関数field_numeric($フィールド)
     {
         if(!isset($ this-> data [$ field]))|| intval(trim($ this-> data [$ field]))<1)
         {
             trueを返します。
         }
        他に
         {
             falseを返します。
         }
     }
 }
 ?> 


これは、独自のチェックで展開するクラスです。



そして今、基本的な塩。 通常のコードの形式でチェックを行います。その後、別のメソッドに入れて、エラーメッセージと他の喜びを固定します。

  <?php

 // $ aは配列です

 $ error_flag = false;
 $ error_text = '';  //エラーテキスト

 $ _chck = new naughty_checks($ a);  //クラスを初期化し、配列を渡します

 / *マジック* /
 <b>スイッチ(true)
 {
    ケース($ _ chck-> field_empty( 'name')):
         $ error_flag = true;
         $ error_text = '名前フィールドに入力しませんでした。';
        休憩;
    ケース($ _ chck-> field_numeric( 'age')):
         $ error_flag = true;
         $ error_text = '記入しなかったか、年齢フィールドに間違って記入しました。';
        休憩;
 } </ b>

 if($ error_flag)
 {
     die($ error_text);
 }
他に
 {
     echo 'UFOを見たことがありますか?';
 }
 ?> 




要旨をご理解いただければ幸いです。 このようなスイッチは、メソッドに組み合わせて、特定のデータを検証するために使用できます。 このアプローチにより、複数のifステートメントを使用する場合よりもコードが読みやすくなります。

このメソッドは、少なくとも1つのチェックメソッドがtrueを返すとすぐにそれ以上のチェックが実行されないため、不必要なチェックを回避します。





これはそれほど大げさではありませんが、入力データをチェックするという私の観点からの興味深いアプローチです。 少なくとも誰かがそれが役に立つと思うことを心から願っています。 また、私は幸せですが、私の能力の限りでは、コメントであなたのすべての質問に答えます。





実際、これらは私の考えでした。

私もあなたが考えを持っていることを望みます、そして、あなたはそれらを大声で表現することを恐れません...



All Articles