在 Joomla! 中,避免使用 PHP 的 $_SESSION 變數以及相關的函式,以下為取得 JSession 物件參考的方式:
//取得 JSession 物件參考的方式
$session =& JFactory::getSession();
設定 Session Value 方式如下:
$session->set("usrName", “Leon”);
當然不只可以存 string or int 等型態的值,亦可儲存物件:
//將物件序列化後儲存到 session 中
$value = new JObject();
$session->set("aJObject", serialize($value));
//反序列化 session 的值
var_dump(unserialize($session->get("aJObject")));
PS. set() function 可加上第三個 Namespace 參數作分辨用
設定 Session Value 還有另外一種方式,就是透過 JApplication 的 setUserState() function,以下為範例:
//取得 JApplication 物件
$app =& JFactory::getApplication();
//可透過比較詳細的 Namespace 參數來區別 & 設定資料
$app->setUserState("com_myComponent.tw.org.myDomain", "Value@JApplication");
看到 Session 設定的方式,想當然爾,取得 Session Value 的方式應該也不會偏離太遠:
$session =& JFactory::getSession();
$sessionVal = $session->get("usrName");
$sessionVal = $session->get("usrName", “defaultUserName”);
$sessionVal = $session->get("usrName", “defaultUserName”, “Namespace”);
$app =& JFactory::getApplication();
$sessionVal = $app->getUserState(“com_myComponent.tw.org.myDomain”);