2014-07-16 3 views
1

게시판 게시판 프로젝트를 만들고 있습니다. 여기에서 session을 관리하기 위해 Session class을 생성합니다.어디에서 프로젝트에 새 Session을 넣어야합니까?

index.php

$bulletin = new Controller_Bulletin(); 
$bulletin->setParams(array_merge($_GET, $_POST)); 
$bulletin->execute('index'); // Execute index action 

Controller_Bulletin.php

class Controller_Bulletin extends Controller_Base 
{ 
    ... 
    public function index() // My index action 
    { 
    // Render the index html 
    $this->render('bulletin/index.php', get_defined_vars()); 
    } 

    public function insert() // My insert action 
    { 
    ... 
    } 
    ... 
} 

내 나는 모든 행동에서 세션 클래스를로드 할 필요 Session class

class Session 
{ 
    public function __construct() 
    { 
    session_start(); 
    } 
    ... 
} 

. 예 : 색인, 삽입 등 하지만 모든 작업에 $session = new Session();을 넣었을 때. 제 멘토는 좋지 않다고했습니다. 어쩌면 나는 모든 행동에 그것을 복제했기 때문에. 나는 아직도 OOP 좋은 아니에요 Controller_Bulletin class

public function index() 
{ 
    $session = new Session(); 
    ... 
} 

public function insert() 
{ 
    $session = new Session(); 
    ... 
} 

에 예. 누군가 세션 객체를 어디에서 불러야하나요? 아직도 내 질문이 명확하지 않으면 알려주세요.

답변

0

무엇) (나는 이미으로 session_start을 할 수있는 클래스가이

class Controller_Bulletin extends Controller_Base { 

    protected $session; 

    public function __construct() { 
     parent::__construct(); 
     $this->session = new Session(); 
    } 

    public function index() { // My index action 
     // Render the index html 
     // use $this->session here 
     $this->render('bulletin/index.php', get_defined_vars()); 
    } 

    public function insert() { // My insert action 
     // use $this->session here 
    } 

} 
+0

나는 이미 그렇게 생각합니다. 아마도 시도해 보겠습니다. 나중에 멘토 질문을 업데이트하겠습니다. – Scramble

0

모든 작업마다 $session = new Session();을로드 할 수 있습니다. 그러나이를 위해서는 public function __construct()을 약간 변경해야합니다. 기능을

public function __construct() 
{ 
if(session_id() === ""){ 
    session_start(); 
} 
} 

으로 변경하십시오. 이전에 세션이 시작되었는지 확인합니다. 그렇다면 다시 시작하고 오류를 내지 않을 것입니다.

+0

처럼 필요에 대한; 따라서 session_start()를 수행하는 것은 의미가 없다고 생각합니다. – Scramble

관련 문제