2012-03-09 41 views
-1

我試着用下面的代碼創建一個使用$ GLOBALS的超全局變量。

test.php的

<?php 
    $GLOBALS['test']='hello'; 
    header("location:test3.php"); 
?> 

這裏是test3.php

<?php 
    var_dump($GLOBALS); 
    echo $GLOBALS['test']; 
?> 

輸出我得到的是

array(5) { ["GLOBALS"]=> *RECURSION* ["_POST"]=> array(0) { } ["_GET"]=> 
array(0) { }["_COOKIE"]=> array(1) {"PHPSESSID"]=>string(26)"oer267anbfrrhtj64lpqrocdd3"} 
["_FILES"]=> array(0) { } } 

的$ GLOBAL [ '測試']是沒有得到組。

但是當我在test.php中嘗試var_dump時,我發現$ GLOBAL數組有一個'test',其值爲'hello'。

這種行爲的原因是什麼?

另外我想創建一個超全球數據庫連接對象使用$ GLOBAL.Is它推薦?

+0

否。不要使用全局變量,並且不需要數據庫的靜態/全局變量。你會發現有很多問題可以解決這個問題,只需要使用搜索 – JohnP 2012-03-09 18:11:59

+0

呵呵,在問之前,請至少學習一下這門語言的基礎知識。您很快就會發現PHP不會在請求之間重複使用變量。 – NikiC 2012-03-09 18:13:49

+0

我希望所有超全球變量的行爲就像$ _SESSION [] – rjv 2012-03-09 18:16:23

回答

1

嘗試使用$ _SESSION而不是$ GLOBALS來設置有狀態變量。

<?php 
session_start(); 
$_SESSION['test'] = 'hello'; 
header("location:test3.php"); 

// test3.php 
session_start(); 
var_dump($_SESSION); 
?> 

至於一個$全局數據庫連接,最好的辦法是閱讀有關與數據庫連接的單變量。我不建議在$ GLOBALS數組中存儲任何東西。

快速谷歌搜索數據庫單例返回了幾頁,但這裏是一個decent one

+0

你怎麼能讓$ GLOBALS達到目的? – rjv 2012-03-09 18:12:59

+0

你沒有。您可以參考$ _POST,$ _GET,$ _SESSION等。查看php文檔@ http://www.php.net/manual/en/language.variables.superglobals.php – 2012-03-09 18:14:32