CI 묻고 답하기

제목 참조연산자 다시 질문드려봅니다. ^^;
글쓴이 불꽃코딩 작성시각 2010/03/10 22:52:50
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 26302   RSS

http://www.codeigniter-kr.org/qna/view/2119/page/1/q/참조

일전에, 웅파님이 메뉴얼을 링크 걸어주셨는데요.
읽어봤는데 뭔소린지도 잘 모르겠고요 ㅎㅎㅎ

 

$CI =& get_instance();


코어 소스에 보면 이렇게 쓴것이 있는데요.
일단, 관련된 녀석들을 좀 분석해보고 있는데요.
 

function &get_instance()
{
 return CI_Base::get_instance();
}


class CI_Base {

 private static $instance;

 public function CI_Base()
 {
  self::$instance =& $this;
 }

 public static function &get_instance()
 {
  return self::$instance;
 }
}

function &get_instance()
{
 return CI_Base::get_instance();
}



혹시 위에 코드들이 뭐하는 애들인지좀 대충이라도 설명해주실수 있는지요?

답변 주시면 감사하겠습니다.
 다음글 [초보]print도 예약어? (1)
 이전글 ajax를 사용하거나 form으로 url정보를 넘길경우... (3)

댓글

헛발이 / 2010/03/11 12:01:37 / 추천 0
저도 잘은 모르지만...

echo "<pre>";
printr($this);
echo "</pre>";
이렇게 해 보면 $this의 값들이 모조리 나오잖아요? 기타 설정이나..
그래서 $CI =& get_instance();를 해서

$this를 참조 할수 없을때
$CI =& get_instance();를 해서 $this->ci->.....이렇게 사용할수 있도록
참조 시키는건 아닌가 하는데...
추측일 뿐입니다... 웅파님 ^^;
양승현 / 2010/03/12 13:36:00 / 추천 0

$this는 ci본연의 객체라 보시면 될듯하구요.
(load한 것들의 사용과 system 내의 플러그인과 라이브러리들 사용가능)

$this가 아닌 새로 생성한 객체에서 자신이 아닌 ci의 객체의 것들을 사용하고자 할때 ci객체의 인스턴스값을 넘겨받아 사용이 가능하답니다.

컨트롤러 딴에서 모델이 아닌 라이브러리 같은것을 로드하여 사용시 해당 라이브러리에서 ci객체의 것들을 사용코자 할때도 사용한답니다. (보통 이 용도로 사용이 되더군요.)

$instance를 static에 올려놓고 get_instance()의 메소드를 콜 했을때 $instance를 참조하도록 넘겨 주는거지요.