2011-05-03 7 views
3

세션 값을 검색하거나 유지해야 할 때 클래스 생성자에서 session_start를 사용하면 정상적으로 간주됩니까? 모범 사례?클래스 내의 액세스 세션 변수

session_start가 __contruct에서 호출되지 않으면 세션 변수를 클래스에서 가져올 수 없습니다.

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()를 호출 완료되었다는 플래그의 의미는 절약 할 수 있습니다.

당신은 그것을 필요로 모든 객체에 (호출) $Session 객체에 대한 참조를 전달 원래 이름에도 불구하고, 싱글 톤 패턴이거나 소위 의존성 주입를 사용할 수 있습니다.

Session 개체가 하나만 있어야합니다.