CodeIgniter User Guide Version 2.1.0


로더 Loader Class

로더는 이름처럼 각 요소를 로드하는데 사용합니다. 요소는 라이브러리(클래스)일수도 있고 뷰파일, 헬퍼, 모델, 혹은 여러분이 만든파일일수도 있습니다.

참고: 이 클래스는 자동으로 초기화 됩니다.

아래함수들이 이 클래스에서 사용가능합니다:

$this->load->library('class_name', $config, 'object name')

이함수는 핵심( core)클래스를 로드하기위해서 사용합니다. class_name 은 로드하고자하는 클래스의 이름입니다. 참고: 우리는 "class" 와 "library" 교대로 사용합니다.

예를들어, 만약 CodeIgniter를 이용하여 이메일을보내고자 한다면 , 먼저 컨트롤러에서 이메일 클래스를 로드합니다:

$this->load->library('email');

일단 로드되면, 라이브러리는 사용가능상태가 되고, $this->email->some_function(). 와 같이 사용합니다.

라이브러리파일은 "libraries" 폴더의 하위디렉토리에 저장될수 있으며, 여러분의 개인적인 application/libraries 폴더에 저장될수도 있습니다. 하위디렉토리에 저장된 파일을 로드하려면, "libraries"폴더로부터의 상대경로를 포함시키면 됩니다. 예를들어 , 다음위치에 파일이 있다면:

libraries/flavors/chocolate.php

다음과 같이 로드합니다:

$this->load->library('flavors/chocolate');

여러분은 얼마든지 원하는만큼 깊이에 있는 하위디렉토리에서 파일을 불러올 수 있습니다.

또한 여러 개의 라이브러리를 한번에 로드하고자 한다면 배열을 넘겨주면 됩니다.

$this->load->library(array('email', 'table'));

옵션 설정 Setting options

두번째 파라미터는 선택적으로 설정정보를 넘겨줄 수 있습니다. 일반적으로 아래와 같이 배열을 넘겨줍니다:

$config = array (
                  'mailtype' => 'html',
                  'charset'  => 'utf-8,
                  'priority' => '1'
               );

$this->load->library('email', $config);

설정옵션은 통상 설정파일을 통해 설정할 수 있습니다. 각 라이브러리페이지에는 상세한 정보가 기술되어있으니 , 사용하고자하는 부분에대한정보는 그곳을 참고해주세요.

주의: 첫번째 파라미터(로드할 라이브러리)로 배열을 넘겨주었다면, 각 라이브러리는 같은 설정정보를 받게 됩니다.

라이브러리를 다른 객체이름으로 할당하기 Assigning a Library to a different object name

세번째 파라미터가 비어있다면, 라이브러리는 통상 객체에 라이브러리와 같은 이름을 할당합니다. 예를들어, 라이브러리 이름이 Session이라면 변수명을$this->session로 할당합니다.

만약 다른클래스이름으로 사용하고싶다면 세번째 파라미터로 넘기시면 됩니다:

$this->load->library('session', '', 'my_session');

// Session class is now accessed using:

$this->my_session

첫번째 파라미터에 배열을 넘겨주었다면, 세번째 파라미터는 무시됩니다.

$this->load->view('file_name', $data, true/false)

이 함수는 뷰파일을 로드합니다. 만약 뷰(Views) 섹션을 읽지않으셨다면, 먼저 읽어주세요 . 이함수가 일반적으로 어떻게 쓰이는지 알 수 있습니다.

첫번째 파라미터는 꼭 필요합니다 . 로드하고자하는 뷰파일의 이름이기 때문입니다. 참고: .php 가 아닌 다른 파일을 사용하는경우가 아니라면 .php를 적어주실필요가 없습니다.

선택적으로 사용하는 두번째 파라미터는 연관배열이나, 객체를 입력받으며,PHP extract 함수를 이용하여 뷰파일에서 사용가능한 변수로 변환합니다.

선택적으로 사용하는 세번째 파라미터는 함수의 기능을 변경하여 문자열을 브라우저로 보내는대신 리턴하게 합니다. 특정한 방법으로 데이터를 처리하고자하는 경우 유용합니다.파라미터를true 로 설정하면 데이터를 리턴합니다. 기본설정은false이며 데이터를 브라우저로 전송합니다. 데이터를 리턴받을때는 아래와같이 변수에 할당해야합니다:

$string = $this->load->view('myfile', '', true);

$this->load->model('Model_name');

$this->load->model('Model_name');

모델이 하위디렉토리에 존재한다면 모델폴더로부터의 상대경로를 적어주세요. 예를들어, 모델이 application/models/blog/queries.php 에 있다면 ,다음과같이 합니다:

$this->load->model('blog/queries');

모델에 다른 객체이름을 할당하고싶다면 두번째 파라미터로 넘겨주시면 됩니다:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

$this->load->database('options', true/false)

이함수는 데이터베이스 클래스를 로드합니다. 두개의 파라미터는 선택적(optional)으로 사용합니다. 더 자세한정보는 데이터베이스(database) 섹션을 참고하세요.

$this->load->vars($array)

이 함수는 연관배열을 입력받아 PHP extract 함수를 통해 변수를 생성합니다. 이 함수는 위의 $this->load->view() 함수에서 두번째 파라미터를 사용한 경우와 같은 결과를 보여줍니다. 만약 컨트롤러의 생성자에서 전역변수를 설정하여 모든함수에서 로드한 뷰에 모두 사용할수 있도록 하려면 이함수를 사용합니다. 이함수를 여러번 호출할 수도 있습니다. 데이터는 캐시되고 합쳐져서 하나의 배열이 된 다음 변수로 변환됩니다.

$this->load->get_var($key)

뷰에서 사용가능한 연관배열을 체크합니다. 어떤 변수가 라이브러리나 컨트롤러에서 $this->load->vars()를 통해 설정된 경우 유용합니다.

$this->load->helper('file_name')

이함수는 헬퍼를 로드합니다.file_name_helper.php 를 제외한 파일이름 입니다.

$this->load->file('filepath/filename', true/false)

이 함수는 일반적인 파일 로딩 함수입니다. 첫번째 파라미터로 파일경로와 이름을 입력하면 해당파일을 연다음 읽습니다. 기본값으로 , 뷰파일처럼 데이터를 브라우저로 보냅니다. 두번째 파라미터를 true 로 설정하면 데이터를 문자열로 리턴합니다.

$this->load->language('file_name')

이함수는 언어로딩함수(language loading function)의 별칭( alias) 입니다 :$this->lang->load()

$this->load->config('file_name')

이함수는 설정로딩함수(config file loading function)의 별칭( alias) 입니다: $this->config->load()

응용 프로그램 패키지

An application package allows for the easy distribution of complete sets of resources in a single directory, complete with its own libraries, models, helpers, config, and language files. It is recommended that these packages be placed in the application/third_party folder. Below is a sample map of an package directory

예제:"Foo Bar" 프로그램의 디렉토리 구성

아래는 "Foo Bar" 프로그램의 디렉토리 구성 예입니다.

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

"Foo Bar"가 어떤 프로그램이든 간에 설정파일(config files), 헬퍼(helpers), 언어(language files), 라이브러리(libraries),모델(models)을 포함하고 있습니다. 이런 리소스들을 컨트롤러에서 사용하려면 로더에게 리소스를 패키지에서 불러올것이라고 알려줘야합니다. 알려주기 위해서는 패키지 경로를 추가 해주면 됩니다.

$this->load->add_package_path()

패키지 경로를 추가해 주면, 로더 클래스는 리소스에 대한 요청이 있을때 추가된 경로를 그 앞에 붙여줍니다.예를 들어, "Foo Bar" 프로그램 패키지는 Foo_bar.php라는 라이브러리를 가지고 있습니다.컨트롤러에서는 아래와 같이 합니다:

$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
$this->load->library('foo_bar');

$this->load->remove_package_path()

컨트롤러가 패키지에 있는 리소스를 더이상 사용할 필요가 없으면 패키지 경로를 제거할 수 있습니다. 패키지경로가 제거되면, 로더는 더이상 그 경로에서 리소스를 찾지 않습니다. 맨 마지막에 추가된 경로를 제거하려면 파라미터없이 이 함수를 호출해 주면 됩니다.

$this->load->remove_package_path()

특정 경로를 제거하려면 add_package_path() 에서 설정한 경로와 같은 값을 파라미터로 넘겨주세요.

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');

패키지 뷰 파일(Package view files)

기본값으로, 패키지 뷰 파일경로는 add_package_path() 가 호출될때 설정됩니다.뷰파일이 로드될 때는 설정된 뷰 경로에서 루프를 돌면서 첫번째로 일치하는 뷰파일이 로드됩니다.

이런경우, 패키지 내에서 뷰파일 이름이 충돌 하여, 잘못된 패키지가 로드될 가능성이 있습니다.그럴 가능성을 없애기 위해서add_package_path() 를 호출할 때 두번째 파라미터를 FALSE 로 설정하세요.

$this->load->add_package_path(APPPATH.'my_app', TRUE);
$this->load->view('my_app_index'); // 로드됨
$this->load->view('welcome_message'); //두번째 파라미터가 TRUE 이므로 기본 welcome_message b/c 가 로드 되지않습니다.

// 리셋
$this->load->remove_package_path(APPPATH.'my_app');

// 두번째 파라미터가 없는경우
$this->load->add_package_path(APPPATH.'my_app', TRUE);
$this->load->view('my_app_index'); // 로드됨
$this->load->view('welcome_message'); // 로드됨