2014-09-01 94 views
3

這可能是一個愚蠢的問題,但我被困在這個愚蠢的問題部分2小時。

我有這個功能,它檢查一個特定的配置文件的變量是不是空的。 這裏的功能: -

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

這裏的配置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']='';。 我在這裏做什麼錯?

+0

我不認爲'$ _GLOBAL'做你認爲它做的,你是否可能意思是'$ GLOBALS'? (但是你真的不應該使用) – cdhowie 2014-09-01 20:26:48

+0

是的,我實際上使用'$ _GLOBAL'作爲所有全局設置變量的變量。 – user2619381 2014-09-01 20:27:36

+0

FWIW:在暴露helper函數的文件中不要包含「config」(它應該在調用上下文中由全局mangling設置) – user2864740 2014-09-01 20:28:36

回答

1

的問題是,$_GLOBAL似乎是一個PHP超全局,但它不是 - PHP中沒有這樣的超級全局。因此,這個變量並不是隨處可見的。如果添加global $_GLOBAL;彷彿你的函數的第一行,你的代碼應工作:

function not_valid_settings() 
{ 
    global $_GLOBAL; 

也許你想用$GLOBALS代替,但我會強烈建議不要它。改爲使用$SETTINGS這樣的名稱,並且不要忘記在需要訪問設置對象的函數中使用global $SETTINGS;

一般而言,您應該避免選擇以$_開頭的變量名稱,除非它們是PHP超全球變量;這個前綴意味着一個超全局的,而你的變量不是。這會造成不必要的混淆。

+0

謝謝,我知道可變範圍的概念。但不知道我的思想不在這裏。 再次感謝。 – user2619381 2014-09-01 20:45:03