配置文件中设置的$ _GLOBAL变量未正确读取

时间:2014-09-01 20:24:18

标签: php global-variables configuration-files

这可能是一个愚蠢的问题,但我在这个部分2小时内陷入了这个愚蠢的问题。

我有这个函数检查特定配置文件的变量是否为空。 这是函数: -

include 'inc.config.php';
function not_valid_settings()
{
    if((empty($_GLOBAL['id'])) || (empty($_GLOBAL['username'])) || empty($_GLOBAL['password']))
    {
        return true;
    }
    else
    {
        return false;
    }
}

这是config inc.config.php文件:

$_GLOBAL=array();
$_GLOBAL['id'] = "asas";
$_GLOBAL['username'] = "asas";
$_GLOBAL['password'] = 'as';

函数调用

include 'inc/inc.functions.php';
if(not_valid_settings())
{
    echo "Please enter correct entries in inc/inc.config.php";
    exit();
}

出于某种原因,我总是得到请输入正确的详细信息。即使我的$_GLOBAL['username']='';。 我在这做什么错?

2 个答案:

答案 0 :(得分:2)

问题在于$_GLOBAL似乎是PHP超全局,但事实并非如此 - PHP中没有这样的超全局。结果,这个变量无法在任何地方立即访问。如果你的函数添加global $_GLOBAL;作为第一行,那么你的代码应该可以工作:

function not_valid_settings()
{
    global $_GLOBAL;

也许您打算使用$GLOBALS代替,但我强烈建议反对它。请改用$SETTINGS这样的名称,不要忘记在需要访问设置对象的函数中使用global $SETTINGS;

通常,您应该避免选择以$_开头的变量名,除非它们是PHP超级全局;这个前缀意味着一个超全局,而你的变量不是。这会造成不必要的混淆。

答案 1 :(得分:1)

$ GLOBALS是你的意思,虽然这不是一个好习惯。

http://php.net/manual/en/reserved.variables.globals.php