보조 클래스 만들기¶
경우에 따라 컨트롤러와 별개로 존재하지만 CodeIgniter의 모든 리소스를 활용할 수 있는 클래스를 개발하고 싶을 수 있습니다. 아래에서 볼 수 있듯이 이것은 쉽게 가능합니다.
get_instance()¶
- get_instance()¶
- 반환:
컨트롤러 인스턴스에 대한 참조
- 반환 형식:
CI_Controller
컨트롤러 메소드 내에서 인스턴스화하는 모든 클래스는 get_instance() 함수를
사용하여 CodeIgniter의 기본 리소스에 접근할 수 있습니다. 이 함수는 메인
CodeIgniter 오브젝트를 반환합니다.
일반적으로 사용 가능한 메소드를 호출하려면 CodeIgniter에서 $this 구문을
사용해야 합니다:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
// 등
하지만 $this는 컨트롤러, 모델, 뷰 내에서만 작동합니다. 자신만의 커스텀 클래스
내에서 CodeIgniter의 클래스를 사용하려면 다음과 같이 할 수 있습니다:
먼저 CodeIgniter 오브젝트를 변수에 할당합니다:
$CI =& get_instance();
오브젝트를 변수에 할당하면 $this 대신 해당 변수를 사용합니다:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
// 등
다른 클래스 내에서 get_instance()를 사용할 경우 프로퍼티에 할당하는 것이
좋습니다. 이렇게 하면 모든 메소드에서 get_instance()를 호출할 필요가 없습니다.
예시:
class Example {
protected $CI;
// 프로퍼티 정의에서 함수를 직접 호출할 수 없으므로 생성자를 사용합니다.
public function __construct()
{
// CodeIgniter 슈퍼 오브젝트 할당
$this->CI =& get_instance();
}
public function foo()
{
$this->CI->load->helper('url');
redirect();
}
public function bar()
{
$this->CI->config->item('base_url');
}
}
위의 예시에서 Example 클래스를 인스턴스화한 후 foo()와 bar() 메소드 모두
각각에서 get_instance()를 호출할 필요 없이 작동합니다.