我正在創建一個php頁面,其中包含許多需要使用相同變量(會話ID)的函數。PHP變量的所有功能?
我可以寫$ ID = $ _SESSION ['ID'];並在每個功能中使用「ID」?
而不必編寫$ ID = $ _SESSION ['ID'];在每個功能?
感謝
我正在創建一個php頁面,其中包含許多需要使用相同變量(會話ID)的函數。PHP變量的所有功能?
我可以寫$ ID = $ _SESSION ['ID'];並在每個功能中使用「ID」?
而不必編寫$ ID = $ _SESSION ['ID'];在每個功能?
感謝
是的,你能做到這一點,但它會更好地創建一個SessionManager
類包裝會話,並通過靜態getXX
功能暴露值(如ID
)。
嘗試這樣:
class SessionManager {
public static function getID() {
return $_SESSION['ID'];
}
}
那麼你就可以得到ID任何你想要的是這樣的:
SessionManager::getID();
如果你正在尋找定義的功能範圍之外的變量,並能夠從函數內自動訪問它,這是不可能的。
你可以定義$ ID = $ _SESSION ['ID'];在您的功能範圍之外,但是在每個功能中您必須添加:
global $ ID;
這會使$ ID變量可以被該函數訪問。
由於許多原因,不建議這樣做。如果我是你,我會直接從函數內調用$ _SESSION ['ID']。
如果您聲明$ID
作爲全局變量,則可以在每個函數中使用它(調用global $ID
後)。但它不會更新$_SESSION['ID']
,如果你想這個也一樣,你必須使用引用:
$ID = &$_SESSION['ID']
我不認爲他正在使用類 – 2009-09-10 22:00:44
我在哪裏談論類?好的我明白了。公共變量可能會令人困惑。改爲全球 – knittl 2009-09-10 22:32:24
(萬一你還沒有想到這一點),你也可以將所有會話變量「集體」在每個功能開始時如此:
foreach ($_SESSION as $key => $value) {
$$key = $value;
}
謝謝。我能夠使用這樣的代碼做這樣的事情: $ 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
如果您定期根據存儲的會話用戶標識檢索用戶名,那麼爲什麼不在登錄時將用戶名存儲在會話變量中? – da5id 2009-09-10 22:17:17
這只是一個例子,我使用用戶ID檢索更多信息,我想知道是否可以「加載」所有行然後調用函數中的某一行。 – Elliott 2009-09-10 22:23:09