2011-05-03 89 views
3

當需要檢索或保留會話值時,是否在類構造函數中使用session_start時認爲是正常的?最佳實踐?類中的訪問會話變量

除非從__contruct調用session_start,否則會從類中檢索會話變量。

session_start();  

if(isset($_REQUEST['siteid'])){ 
    $siteid = $_REQUEST['siteid']; 
    $_SESSION['siteid'] = $siteid; 
    echo $siteid; 
}else{ 
    $siteid = ""; 
} 
require_once 'common/lib_constant.php'; 
require_once 'common/database.php'; 
require_once 'common/common.class.php'; 
$commonClass = new commonClass(); 

回答

3

最佳做法是從引導啓動會話。
和會話本身通過某種智能包裝類訪問(請參閱ZF的示例)。
這樣你應該100%確定你的代碼中不會有頭問題和重複的session_start調用。
一個類可以實例化很多次/請求...引導程序只運行一次/請求。

0

你應該使用一個包裝對象訪問會話變量,即在它處理第一個請求調用session_start(),然後保存一個標誌,意味着已完成這項工作,它只是它的構造函數中調用session_start()

可以使用Singleton模式或所謂依賴注入是,儘管原來的名字,只是傳遞一個參考的(叫)$Session對象到需要它的每一個對象。

應該只存在Session對象的一個​​實例。