로더 Loader Class

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

Note

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

Application “Packages”

응용 프로그램 패키지는 자신의 라이브러리, 모델, 헬퍼, 설정, 언어 파일과 완전한 하나의 디렉토리에 있는 리소스의 완전한 세트를 쉽게 배포 가능합니다. 패키지는 응용 프로그램 / third_party 디렉토리에 배치하는 것이 좋습니다. 아래는 패키지 디렉토리의 샘플 맵입니다.

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

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

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

패키지 뷰 파일 Package view files

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

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

$this->load->add_package_path(APPPATH.'my_app', FALSE);
$this->load->view('my_app_index'); // Loads
$this->load->view('welcome_message'); // Will not load the default welcome_message b/c the second param to add_package_path is FALSE

// Reset things
$this->load->remove_package_path(APPPATH.'my_app');

// Again without the second parameter:
$this->load->add_package_path(APPPATH.'my_app');
$this->load->view('my_app_index'); // Loads
$this->load->view('welcome_message'); // Loads

클래스 레퍼런스

class CI_Loader
library($library[, $params = NULL[, $object_name = NULL]])
인수:
  • $library (mixed) – Library name as a string or an array with multiple libraries
  • $params (array) – Optional array of parameters to pass to the loaded library’s constructor
  • $object_name (string) – Optional object name to assign the library to
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

이 함수는 핵심( core)클래스를 로드하기 위해서 사용합니다.

Note

우리는 “class” 와 “library” 교대로 사용합니다.

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

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

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

라이브러리파일은 “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

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

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

$this->load->library('calendar', NULL, 'my_calendar');

// Calendar class is now accessed using:
$this->my_calendar

주의, 여러 개의 라이브러리가 첫 번째 파라미터에 배열로 제공된다면, 이 파라미터는 무시됩니다.

driver($library[, $params = NULL[, $object_name]])
인수:
  • $library (mixed) – Library name as a string or an array with multiple libraries
  • $params (array) – Optional array of parameters to pass to the loaded library’s constructor
  • $object_name (string) – Optional object name to assign the library to
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

이 함수는 드라이버 라이브러리를 로드하는데 사용됩니다, library() 함수와 매우 비슷하게 작동합니다.

예를 들면, CodeIgniter 에서 세션을 사용하고 싶으면, 우선 컨트롤러 안에서 세션 드라이버를 로드하는 것입니다:

$this->load->driver('session');

일단 로드되면, 라이브러리는 $this->session 를 이용해서 사용 가능합니다.

드라이버 파일은 메인 “libraries” 디렉토리 안에 서브디렉토리에 저장되어야 합니다.또는 개인 고유의 application/libraries 디렉토리 안에 저장되어야 합니다. 서브디렉토리명은 부모 클래스명과 동일해야 합니다. 자세한 내용은 Drivers 설명을 참조해주세요.

추가적으로, 로드 함수에 드라이버의 이름을 배열로 전달하면, 여러 개의 드라이버가 동시에 로드될 수 있습니다.

$this->load->driver(array('session', 'cache'));

Setting options

두 번째(선택적인) 파라미터는 환경 설정을 선택적으로 보냅니다. . 당신은 일반적으로 아래와 같이 배열을 넘겨줍니다:

$config = array(
        'sess_driver' => 'cookie',
        'sess_encrypt_cookie'  => true,
        'encryption_key' => 'mysecretkey'
);

$this->load->driver('session', $config);

구성 옵션은 일반적으로 또한 설정 파일을 통해 설정할 수 있습니다. 각 라이브러리는 각각의 페이지에서 상세하게 설명되어 있습니다. 그래서 사용하고자 하는 부분에 대한 정보를 읽어 보시기 바랍니다.

Assigning a Driver to a different object name

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

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

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

// Session class is now accessed using:
$this->my_session
view($view[, $vars = array()[, return = FALSE]])
인수:
  • $view (string) – View name
  • $vars (array) – An associative array of variables
  • $return (bool) – Whether to return the loaded view
반환값:

View content string if $return is set to TRUE, otherwise CI_Loader instance (method chaining)

반환형:

mixed

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

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

Note

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

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

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

$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = ''])
인수:
  • $vars (mixed) – An array of variables or a single variable name
  • $val (mixed) – Optional variable value
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

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

get_var($key)
인수:
  • $key (string) – Variable name key
반환값:

Value if key is found, NULL if not

반환형:

mixed

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

get_vars()
반환값:An array of all assigned view variables
반환형:배열(array)

이 함수는 뷰에서 사용 가능한 모든 변수를 검색합니다.

clear_vars()
반환값:CI_Loader instance (method chaining)
반환형:CI_Loader

캐시된 뷰 변수를 지웁니다.

model($model[, $name = ''[, $db_conn = FALSE]])
인수:
  • $model (mixed) – Model name or an array containing multiple models
  • $name (string) – Optional object name to assign the model to
  • $db_conn (string) – Optional database configuration group to load
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

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

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

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

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

$this->load->model('model_name', 'fubar');
$this->fubar->method();
database([$params = ''[, $return = FALSE[, $query_builder = NULL]]])
인수:
  • $params (mixed) – Database group name or configuration options
  • $return (bool) – Whether to return the loaded database object
  • $query_builder (bool) – Whether to load the Query Builder
반환값:

Loaded CI_DB instance or FALSE on failure if $return is set to TRUE, otherwise CI_Loader instance (method chaining)

반환형:

mixed

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

dbforge([$db = NULL[, $return = FALSE]])
인수:
  • $db (object) – Database object
  • $return (bool) – Whether to return the Database Forge instance
반환값:

Loaded CI_DB_forge instance if $return is set to TRUE, otherwise CI_Loader instance (method chaining)

반환형:

mixed

Database Forge 클래스를 로드합니다, 더 많은 정보를 위해 매뉴얼 참조해주세요

dbutil([$db = NULL[, $return = FALSE]])
인수:
  • $db (object) – Database object
  • $return (bool) – Whether to return the Database Utilities instance
반환값:

Loaded CI_DB_utility instance if $return is set to TRUE, otherwise CI_Loader instance (method chaining)

반환형:

mixed

Database Utilities 클래스를 로드합니다, 더 많은 정보를 위해 매뉴얼 참조해주세요

helper($helpers)
인수:
  • $helpers (mixed) – Helper name as a string or an array containing multiple helpers
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

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

file($path[, $return = FALSE])
인수:
  • $path (string) – File path
  • $return (bool) – Whether to return the loaded file
반환값:

File contents if $return is set to TRUE, otherwise CI_Loader instance (method chaining)

반환형:

mixed

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

language($files[, $lang = ''])
인수:
  • $files (mixed) – Language file name or an array of multiple language files
  • $lang (string) – Language name
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

이 함수는 language loading method 의 Alias 입니다 : $this->lang->load().

config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
인수:
  • $file (string) – Configuration file name
  • $use_sections (bool) – Whether configuration values should be loaded into their own section
  • $fail_gracefully (bool) – Whether to just return FALSE in case of failure
반환값:

TRUE on success, FALSE on failure

반환형:

bool

이 함수는 config file loading method 의 Alias 입니다 : $this->config->load()

is_loaded($class)
인수:
  • $class (string) – Class name
반환값:

Singleton property name if found, FALSE if not

반환형:

mixed

클래스가 이미 로드되었는지를 확인할 수 있습니다.

Note

여기에서 “클래스” 라는 말은 라이브러리와 드라이버입니다.

요청한 클래스가 로드되면, 함수는 CI Super-object 안에서 할당된 이름을 리턴합니다. 그리고 없으면 FALSE를 리턴합니다:

$this->load->library('form_validation');
$this->load->is_loaded('Form_validation');      // returns 'form_validation'

$this->load->is_loaded('Nonexistent_library');  // returns FALSE

Important

(다른 속성에 할당된) 클래스의 인스턴스를 두 개 이상 있는 경우에, 첫 번째가 반환됩니다.

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

$this->load->is_loaded('Form_validation');      // returns 'fv'
add_package_path($path[, $view_cascade = TRUE])
인수:
  • $path (string) – Path to add
  • $view_cascade (bool) – Whether to use cascading views
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

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

$this->load->add_package_path(APPPATH.'third_party/foo_bar/')
        ->library('foo_bar');
remove_package_path([$path = ''])
인수:
  • $path (string) – Path to remove
반환값:

CI_Loader instance (method chaining)

반환형:

CI_Loader

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

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

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
get_package_paths([$include_base = TRUE])
인수:
  • $include_base (bool) – Whether to include BASEPATH
반환값:

An array of package paths

반환형:

array

현재 사용 가능한 패키지 경로 반환.