CI 묻고 답하기

제목 $this->CI->session->set_userdata($user); 와 $this->session->set_userdata($user); 차이가 있나요?
글쓴이 건곤대나이 작성시각 2014/09/27 15:10:09
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14591   RSS
ci 를 이용해서 웹프로그램을 만드는 중입니다.
ci 입문은 올해 4월달부터 입니다. 약 6개월차 되는군요 ^^;

자동 로그인 부분 구현중에 막혀서 공개된 ci 프로그램 몇가지를 보면서 작업중입니다.

그런데 어떤경우는
$this->CI->session->set_userdata($user); 를 호출하고

class Qauth {

    public function __construct()
    {
        $this->CI =& get_instance();

        // Automatically load the form helper

        // Load Qauth config
        $this->CI->load->config('qauth', TRUE);

        // Load required library
        $this->CI->load->model('member_model');

        // Load Qauth language        
        $this->CI->lang->load('qauth');
    }

    function login($data)
    {
        전처리
        
        $this->CI->session->set_userdata($user);
        
        후처리
    }

}

또 어떤 경우는 CI가 없이
$this->session->set_userdata($user); 를 호출하는 경우를 발견했습니다.

class Admin extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
//        생성자 코드에 기능추가
    }

    // if logged in, validate it.
    if ($this->qauth->is_logged())
    {
    }
    // check auto sign-in
    elseif(자동로그인 조건)
    {
        전처리
        
        $this->session->set_userdata($user);
        
        후처리
    }

}

********************************************************

CI가 중간에 들어간 호출과 그렇지 않은 호출의 차이가 무엇인지 궁금합니다.
그리고 어느 방식으로 사용하는것이 올바른 것인지도 알고 싶습니다.

 
 다음글 라우터에 한글 사용 (2)
 이전글 codeigniter database.php에서 dat... (4)

댓글

letsgolee / 2014/09/28 18:12:31 / 추천 0
$this->session->set_userdata($user); 에서 $this는 CI_Controller 를 확장한 클래스입니다. 따라서 그 클래스 정의를 보면 
class [Controller 이름] extends CI_Controller 이렇게 나가는 겁니다.

$this->CI->session->set_userdata($user); 에서 $this는 단순 클래스입니다. 따라서 CI 를 그냥 쓸 수 없지요. 그래서 하는 방법은 CI를 불러와야겠지요? 그 함수가 get_instance()입니다. $this->CI를 쓰기전에 $this->CI =& get_instance(); 를 사용하는 것은 그 때문이구요. 그럼 왜 $this->CI냐? 그건 엿장수 맘입니다. 이 말은 이해하지요?
 
건곤대나이 / 2014/09/28 20:26:22 / 추천 0
@letsgolee 님 답변 감사합니다.

class [Controller 이름] extends CI_Controller 가 들어간 클래스는
CI 없이 사용하고

단순 클래스는 
$this->CI =& get_instance(); 해준후에 $this->CI 와 함께 사용한다는 말씀이시군요.

궁금한점이 많이 해소된듯 합니다. ^^