Php $\未正确读取配置文件中设置的全局变量
这可能是一个愚蠢的问题,但我在这愚蠢的问题上被困了两个小时 我有一个函数,它检查特定配置文件的变量是否为空。 下面是函数:-Php $\未正确读取配置文件中设置的全局变量,php,global-variables,configuration-files,Php,Global Variables,Configuration Files,这可能是一个愚蠢的问题,但我在这愚蠢的问题上被困了两个小时 我有一个函数,它检查特定配置文件的变量是否为空。 下面是函数:- include 'inc.config.php'; function not_valid_settings() { if((empty($_GLOBAL['id'])) || (empty($_GLOBAL['username'])) || empty($_GLOBAL['password'])) { return true; }
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();
}
由于某些原因,我总是收到通知,请输入正确的详细信息。即使我的$\u全局['username']=''代码>。
我在这里做错了什么?$GLOBALS是您想要使用的,尽管这不是一个好的做法
问题是,$\u GLOBAL
似乎是一个PHP超全局,但它不是——PHP中没有这样的超全局。因此,该变量不能在任何地方立即访问。如果添加global$\u global代码>作为函数的第一行,您的代码应该工作:
function not_valid_settings()
{
global $_GLOBAL;
也许你想用$GLOBALS
来代替,尽管我强烈建议不要这样做。改用$SETTINGS
这样的名称,不要忘记使用全局$SETTINGS代码>在需要访问设置对象的函数中
一般来说,除非变量名是PHP超全局变量,否则应避免选择以$开头的变量名;此前缀表示超全局变量,而您的变量不是。这会造成不必要的混乱。我不认为$\u GLOBAL
做了你认为它做的事情,你是说$GLOBALS
?(但实际上你不应该使用任何一个。)是的,我实际上使用了$\u GLOBAL
作为所有全局设置变量的变量。FWIW:不要在公开帮助函数的文件中包含“config”(应该在调用上下文中通过全局篡改来设置)$\uu
前缀通常是为PHP超全局变量保留的。除非您正在访问其中一个前缀,否则不要使用$\u
前缀。改为使用类似于$SETTINGS
的内容。@cdhowie我将$\u GLOBAL更改为$GLOBAL。它似乎仍然不起作用。谢谢,我知道变量范围的概念。但我不确定我的心思是否在这里。再次感谢。