2009-09-10 41 views
0

我正在創建一個php頁面,其中包含許多需要使用相同變量(會話ID)的函數。PHP變量的所有功能?

我可以寫$ ID = $ _SESSION ['ID'];並在每個功能中使用「ID」?

而不必編寫$ ID = $ _SESSION ['ID'];在每個功能?

感謝

回答

1

是的,你能做到這一點,但它會更好地創建一個SessionManager類包裝會話,並通過靜態getXX功能暴露值(如ID)。

嘗試這樣:

class SessionManager { 
    public static function getID() { 
     return $_SESSION['ID']; 
    } 
} 

那麼你就可以得到ID任何你想要的是這樣的:

SessionManager::getID(); 
+0

謝謝。我能夠使用這樣的代碼做這樣的事情: $ getid =「SELECT'username' FROM'users' WHERE'ID' ='$ ID'」; \t $ result = mysql_query($ getid); \t $ count = mysql_num_rows($ result); \t $ row = mysql_fetch_row($ result); 而不是每次我需要訪問數據庫中的一行時必須輸入該數據?謝謝 – Elliott 2009-09-10 22:05:01

+0

如果您定期根據存儲的會話用戶標識檢索用戶名,那麼爲什麼不在登錄時將用戶名存儲在會話變量中? – da5id 2009-09-10 22:17:17

+0

這只是一個例子,我使用用戶ID檢索更多信息,我想知道是否可以「加載」所有行然後調用函數中的某一行。 – Elliott 2009-09-10 22:23:09

1

如果你正在尋找定義的功能範圍之外的變量,並能夠從函數內自動訪問它,這是不可能的。

你可以定義$ ID = $ _SESSION ['ID'];在您的功能範圍之外,但是在每個功能中您必須添加:

global $ ID;

這會使$ ID變量可以被該函數訪問。

由於許多原因,不建議這樣做。如果我是你,我會直接從函數內調用$ _SESSION ['ID']。

0

如果您聲明$ID作爲全局變量,則可以在每個函數中使用它(調用global $ID後)。但它不會更新$_SESSION['ID'],如果你想這個也一樣,你必須使用引用:

$ID = &$_SESSION['ID'] 
+0

我不認爲他正在使用類 – 2009-09-10 22:00:44

+0

我在哪裏談論類?好的我明白了。公共變量可能會令人困惑。改爲全球 – knittl 2009-09-10 22:32:24

0

(萬一你還沒有想到這一點),你也可以將所有會話變量「集體」在每個功能開始時如此:

foreach ($_SESSION as $key => $value) { 
    $$key = $value; 
}