부가 클래스 생성하기¶
어떤 경우에는, 여러분은 컨트롤러에서는 떨어져있지만, CodeIgniter 의 모든 리소스를 활용할 수 있는 클래스를 개발하고 싶을 것입니다. 이것은 여러분이 보게될 것처럼 쉽게 가능합니다.
get_instance()¶
- get_instance()¶
반환값: Reference to your controller’s instance 반환형: CI_Controller
컨트롤러 메소드 안에 인스턴스화한 어떤 클래스에서든 CodeIgniter 의 기본 리소스를 접근할 수 있습니다. get_instance() 함수를 사용하면 됩니다. 이 함수는 메인 CodeIgniter 객체를 반환합니다.
일반적으로, 사용 가능한 CodeIgniter 의 함수를 호출하기 위해, $this 생성자를 사용하는 것입니다:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
// etc.
$this 는 그러나 컨트롤러, 모델, 뷰 에서만 사용이 가능합니다. 만약에 CodeIgniter 의 클래스를 여러분이 정의한 클래스 내에서 사용하고 싶다면, 다음과 같이 할 수 있습니다:
우선, CodeIgniter 객체를 변수에 할당합니다:
$CI =& get_instance();
객체를 변수에 할당하고 나면, 그 변수를 $this 대신 사용할 수 있습니다:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
// etc.
다른 클래스 안에서 get_instance() 를 사용하면, 속성에 할당하는 경우 더 나은 경우입니다. 이 방법은, get_instance() 를 각각의 함수에서 호출할 필요가 없게 됩니다.
예제:
class Example {
protected $CI;
// We'll use a constructor, as you can't directly call a function
// from a property definition.
public function __construct()
{
// Assign the CodeIgniter super-object
$this->CI =& get_instance();
}
public function foo()
{
$this->CI->load->helper('url');
redirect();
}
public function bar()
{
$this->CI->config->item('base_url');
}
}
위 예제에서, foo() 함수와 bar() 함수는 모두 get_instance() 를 호출할 필요 없이 Example 클래스를 인스턴스화 한 후에 작동할 것입니다.