0

を含むエラーレベルでPHPで外部変数を使用する最良の方法を探していますE_NOTICE

3 つの方法が考えられます。それぞれについてヒントを与えるか、別のアプローチを提案していただければ幸いです。

    1.
クラス WebApp {

    public static function _GET($Index) {
        if (isset($_GET[$Index])) {
            $_GET[$Index] を返します。
        } そうしないと {
            NULL を返します。
        }
    }
}

// E_NOTICE、通知をスローしません:
echo WebApp::_GET('ID');

// E_NOTICE、通知をスローします:
echo $_GET['ID'];

2.

クラスRequestSanitizer {
    const V_INTEGER = 1;
    const V_STRING = 2;
    const V_REAL = 3;

    public static function Sanitize($arr) {
        foreach ($arr as $key => $val) {
            if (array_key_exists($key, $_GET)) {
                スイッチ ($val) {
                    ケース RequestSanitizer::V_INTEGER:
                        $_GET[$キー] = $_GET[$キー] + 0;
                        壊す;
                    ケース RequestSanitizer::V_STRING:
                        $_GET[$キー] = $_GET[$キー] + '';
                        壊す;
                    ケース RequestSanitizer::V_REAL:
                        $_GET[$キー] = $_GET[$キー] + 0;
                        壊す;
                }
            } そうしないと {
                $_GET[$key] = null;
            }
        }
    }
}

RequestSanitizer::Sanitize(配列(
    'GraphID' => RequestSanitizer::V_INTEGER,  
    'UserName' => RequestSanitizer::V_STRING,  
    'パスワード' => RequestSanitizer::V_STRING,  
    「価格」 => RequestSanitizer::V_REAL
));

echo $_GET['GraphID'];

3.

if (isset($_GET['ID']) && ($_GET['ID']+0>0)) {
   echo $_GET['ID']
}
4

2 に答える 2

1

私は使うだろう

if (isset($_GET['ID']) && ($_GET['ID']+0>0)) {
   echo (int)$_GET['ID']
}

integer へのキャストを使用し(int)ます。値が整数でなければならない場合。

于 2009-10-13T15:39:07.670 に答える
0

すべての Php「スーパーグローバル」をカプセル化し、「param()」、「numParam()」、「arrayParam()」などのメソッドを提供する Request クラスを使用します。

$req = new Request();
$user_id = $req->numParam('id');
 // user_id is guaranteed to be a valid integer or 0
于 2009-10-13T15:53:27.687 に答える