0

我正在寻找如何在 PHP 中使用具有错误级别的外部变量的最佳方法,包括E_NOTICE.

我有三种可能的方法,我会很高兴,如果你能对每种方法给出一些提示或提出你喜欢的不同方法。

    1.
类 WebApp {

    公共静态函数 _GET($Index) {
        if (isset($_GET[$Index])) {
            返回 $_GET[$Index];
        } 别的 {
            返回空值;
        }
    }
}

// E_NOTICE,不抛出通知:
回声 WebApp::_GET('ID');

// E_NOTICE,抛出一个通知:
回声 $_GET['ID'];

2.

类 RequestSanitizer {
    常量 V_INTEGER = 1;
    常量 V_STRING = 2;
    常量 V_REAL = 3;

    公共静态函数清理($arr){
        foreach ($arr as $key => $val) {
            if (array_key_exists($key, $_GET)) {
                开关 ($val) {
                    案例 RequestSanitizer::V_INTEGER:
                        $_GET[$key] = $_GET[$key] + 0;
                        休息;
                    案例 RequestSanitizer::V_STRING:
                        $_GET[$key] = $_GET[$key] + '';
                        休息;
                    案例 RequestSanitizer::V_REAL:
                        $_GET[$key] = $_GET[$key] + 0;
                        休息;
                }
            } 别的 {
                $_GET[$key] = null;
            }
        }
    }
}

RequestSanitizer::Sanitize(数组(
    'GraphID' => RequestSanitizer::V_INTEGER,  
    '用户名' => RequestSanitizer::V_STRING,  
    '密码' => RequestSanitizer::V_STRING,  
    '价格' => RequestSanitizer::V_REAL
));

回声 $_GET['GraphID'];

3.

if (isset($_GET['ID']) && ($_GET['ID']+0>0)) {
   回声 $_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“超全局变量”的 Request 类,并提供“param()”、“numParam()”、“arrayParam()”等方法。

$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 回答