Loader 클래스

Loader는 이름에서 알 수 있듯이 요소를 로드하는 데 사용됩니다. 이러한 요소는 라이브러리(클래스) 뷰 파일, 드라이버, 헬퍼, 모델 또는 자체 파일이 될 수 있습니다.

참고

이 클래스는 시스템에 의해 자동으로 초기화되므로 수동으로 초기화할 필요가 없습니다.

애플리케이션 패키지

애플리케이션 패키지는 자체 라이브러리, 모델, 헬퍼, 설정 및 언어 파일을 갖춘 완전한 리소스 세트를 단일 디렉터리에 쉽게 배포할 수 있도록 합니다. 이러한 패키지는 application/third_party 디렉터리에 배치하는 것이 권장됩니다. 아래는 패키지 디렉터리의 예시입니다.

다음은 “Foo Bar”라는 이름의 애플리케이션 패키지 디렉터리 예시입니다.

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

“Foo Bar” 애플리케이션 패키지의 목적이 무엇이든 자체 설정 파일, 헬퍼, 언어 파일, 라이브러리 및 모델을 가지고 있습니다. 컨트롤러에서 이러한 리소스를 사용하려면 add_package_path() 메소드를 통해 패키지 경로를 추가하여 패키지에서 리소스를 로드할 것임을 Loader에 먼저 알려야 합니다.

패키지 뷰 파일

기본적으로 패키지 뷰 파일 경로는 add_package_path()가 호출될 때 설정됩니다. 뷰 경로는 반복 검색되며 일치하는 것을 찾으면 해당 뷰가 로드됩니다.

이 경우 패키지 내에서 뷰 이름 충돌이 발생하여 잘못된 패키지가 로드될 수 있습니다. 이를 방지하려면 add_package_path()를 호출할 때 선택적인 두 번째 매개변수를 FALSE로 설정합니다.

$this->load->add_package_path(APPPATH.'my_app', FALSE);
$this->load->view('my_app_index'); // 로드됨
$this->load->view('welcome_message'); // add_package_path의 두 번째 매개변수가 FALSE이므로 기본 welcome_message가 로드되지 않음

// 초기화
$this->load->remove_package_path(APPPATH.'my_app');

// 두 번째 매개변수 없이 다시:
$this->load->add_package_path(APPPATH.'my_app');
$this->load->view('my_app_index'); // 로드됨
$this->load->view('welcome_message'); // 로드됨

클래스 레퍼런스

class CI_Loader
library($library[, $params = NULL[, $object_name = NULL]])
매개변수:
  • $library (mixed) – 문자열 라이브러리 이름 또는 여러 라이브러리가 있는 배열

  • $params (array) – 로드된 라이브러리의 생성자에 전달할 선택적 매개변수 배열

  • $object_name (string) – 라이브러리를 할당할 선택적 객체 이름

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

이 메소드는 코어 클래스를 로드하는 데 사용됩니다.

참고

“클래스”와 “라이브러리”라는 용어를 혼용합니다.

예를 들어 CodeIgniter로 이메일을 보내려면 첫 번째 단계는 컨트롤러 내에서 email 클래스를 로드하는 것입니다:

$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'));

옵션 설정

선택적인 두 번째 매개변수를 사용하면 설정 값을 선택적으로 전달할 수 있습니다. 일반적으로 배열로 전달합니다:

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

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

설정 옵션은 일반적으로 설정 파일을 통해서도 설정할 수 있습니다. 각 라이브러리는 자체 페이지에서 자세히 설명되어 있으므로 사용하려는 각 라이브러리에 대한 정보를 읽어보세요.

첫 번째 매개변수에 배열로 여러 라이브러리가 제공되면 각각 동일한 매개변수 정보를 받는다는 점에 유의하세요.

라이브러리를 다른 객체 이름에 할당

선택적인 세 번째 매개변수가 비어 있으면 라이브러리는 일반적으로 라이브러리와 같은 이름의 객체에 할당됩니다. 예를 들어 라이브러리 이름이 Calendar이면 $this->calendar라는 변수에 할당됩니다.

자체 클래스 이름을 설정하려면 세 번째 매개변수에 값을 전달할 수 있습니다:

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

// Calendar 클래스는 이제 다음을 사용하여 접근합니다:
$this->my_calendar

첫 번째 매개변수에 배열로 여러 라이브러리가 제공되면 이 매개변수는 무시된다는 점에 유의하세요.

driver($library[, $params = NULL[, $object_name]])
매개변수:
  • $library (mixed) – 문자열 라이브러리 이름 또는 여러 라이브러리가 있는 배열

  • $params (array) – 로드된 라이브러리의 생성자에 전달할 선택적 매개변수 배열

  • $object_name (string) – 라이브러리를 할당할 선택적 객체 이름

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

이 메소드는 드라이버 라이브러리를 로드하는 데 사용되며 library() 메소드와 매우 유사하게 작동합니다.

예를 들어 CodeIgniter에서 세션을 사용하려면 첫 번째 단계는 컨트롤러 내에서 session 드라이버를 로드하는 것입니다:

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

로드되면 $this->session을 사용하여 라이브러리를 바로 사용할 수 있습니다.

드라이버 파일은 기본 “libraries” 디렉터리 내의 하위 디렉터리 또는 개인 application/libraries 디렉터리에 저장되어야 합니다. 하위 디렉터리는 상위 클래스 이름과 일치해야 합니다. 자세한 내용은 드라이버 설명을 읽어보세요.

또한 로드 메소드에 드라이버 배열을 전달하여 여러 드라이버 라이브러리를 동시에 로드할 수 있습니다:

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

옵션 설정

선택적인 두 번째 매개변수를 사용하면 설정 값을 선택적으로 전달할 수 있습니다. 일반적으로 배열로 전달합니다:

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

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

설정 옵션은 일반적으로 설정 파일을 통해서도 설정할 수 있습니다. 각 라이브러리는 자체 페이지에서 자세히 설명되어 있으므로 사용하려는 각 라이브러리에 대한 정보를 읽어보세요.

드라이버를 다른 객체 이름에 할당

선택적인 세 번째 매개변수가 비어 있으면 라이브러리는 상위 클래스와 같은 이름의 객체에 할당됩니다. 예를 들어 라이브러리 이름이 Session이면 $this->session이라는 변수에 할당됩니다.

자체 클래스 이름을 설정하려면 세 번째 매개변수에 값을 전달할 수 있습니다:

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

// Session 클래스는 이제 다음을 사용하여 접근합니다:
$this->my_session
view($view[, $vars = array()[, return = FALSE]])
매개변수:
  • $view (string) – 뷰 이름

  • $vars (array) – 연관 배열 변수

  • $return (bool) – 로드된 뷰를 반환할지 여부

반환:

$return이 TRUE로 설정된 경우 뷰 내용 문자열, 그렇지 않으면 CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

mixed

이 메소드는 뷰 파일을 로드하는 데 사용됩니다. 사용 설명서의 섹션을 아직 읽지 않았다면 읽어보는 것이 좋습니다. 이 메소드가 일반적으로 어떻게 사용되는지 보여주기 때문입니다.

첫 번째 매개변수는 필수입니다. 로드하려는 뷰 파일의 이름입니다.

참고

.php 외의 것을 사용하지 않는 한 .php 파일 확장자를 지정할 필요가 없습니다.

두 번째 선택적 매개변수는 연관 배열 또는 객체를 입력으로 받아 PHP extract() 함수를 통해 뷰 파일에서 사용할 수 있는 변수로 변환합니다. 이것이 어떻게 유용한지 알아보려면 페이지를 읽어보세요.

세 번째 선택적 매개변수를 사용하면 메소드의 동작을 변경하여 브라우저로 보내는 대신 데이터를 문자열로 반환하도록 할 수 있습니다. 이는 어떤 방식으로 데이터를 처리하려는 경우에 유용할 수 있습니다. 매개변수를 TRUE(boolean)로 설정하면 데이터를 반환합니다. 기본 동작은 FALSE로 브라우저로 전송합니다. 데이터를 반환받으려면 변수에 할당하는 것을 기억하세요:

$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = ''])
매개변수:
  • $vars (mixed) – 변수 배열 또는 단일 변수 이름

  • $val (mixed) – 선택적 변수 값

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

이 메소드는 연관 배열을 입력으로 받아 PHP extract() 함수를 사용하여 변수를 생성합니다. 이 메소드는 위의 $this->load->view() 메소드의 두 번째 매개변수를 사용하는 것과 동일한 결과를 생성합니다. 이 메소드를 독립적으로 사용하려는 이유는 컨트롤러의 생성자에서 일부 전역 변수를 설정하고 모든 메소드에서 로드된 뷰 파일에서 사용할 수 있게 하려는 경우입니다. 이 메소드를 여러 번 호출할 수 있습니다. 데이터는 캐시되어 변수로 변환하기 위해 하나의 배열로 병합됩니다.

get_var($key)
매개변수:
  • $key (string) – 변수 이름 키

반환:

키를 찾은 경우 값, 찾지 못한 경우 NULL

반환 형식:

mixed

이 메소드는 뷰에서 사용 가능한 변수의 연관 배열을 확인합니다. 라이브러리나 다른 컨트롤러 메소드에서 $this->load->vars()를 사용하여 변수가 설정된 경우에 유용합니다.

get_vars()
반환:

할당된 모든 뷰 변수의 배열

반환 형식:

array

이 메소드는 뷰에서 사용 가능한 모든 변수를 가져옵니다.

clear_vars()
반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

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

model($model[, $name = ''[, $db_conn = FALSE]])
매개변수:
  • $model (mixed) – 모델 이름 또는 여러 모델이 포함된 배열

  • $name (string) – 모델을 할당할 선택적 객체 이름

  • $db_conn (string) – 로드할 선택적 데이터베이스 설정 그룹

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

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) – 데이터베이스 그룹 이름 또는 설정 옵션

  • $return (bool) – 로드된 데이터베이스 객체를 반환할지 여부

  • $query_builder (bool) – Query Builder를 로드할지 여부

반환:

$return이 TRUE로 설정된 경우 로드된 CI_DB 인스턴스 또는 실패 시 FALSE, 그렇지 않으면 CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

mixed

이 메소드를 사용하면 데이터베이스 클래스를 로드할 수 있습니다. 두 매개변수는 선택적입니다. 자세한 내용은 데이터베이스 섹션을 참조하세요.

dbforge([$db = NULL[, $return = FALSE]])
매개변수:
  • $db (object) – 데이터베이스 객체

  • $return (bool) – Database Forge 인스턴스를 반환할지 여부

반환:

$return이 TRUE로 설정된 경우 로드된 CI_DB_forge 인스턴스, 그렇지 않으면 CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

mixed

Database Forge 클래스를 로드합니다. 자세한 내용은 해당 매뉴얼을 참조하세요.

dbutil([$db = NULL[, $return = FALSE]])
매개변수:
  • $db (object) – 데이터베이스 객체

  • $return (bool) – Database Utilities 인스턴스를 반환할지 여부

반환:

$return이 TRUE로 설정된 경우 로드된 CI_DB_utility 인스턴스, 그렇지 않으면 CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

mixed

Database Utilities 클래스를 로드합니다. 자세한 내용은 해당 매뉴얼을 참조하세요.

helper($helpers)
매개변수:
  • $helpers (mixed) – 문자열 헬퍼 이름 또는 여러 헬퍼가 포함된 배열

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

이 메소드는 헬퍼 파일을 로드합니다. file_name은 _helper.php 확장자 없이 파일 이름입니다.

file($path[, $return = FALSE])
매개변수:
  • $path (string) – 파일 경로

  • $return (bool) – 로드된 파일을 반환할지 여부

반환:

$return이 TRUE로 설정된 경우 파일 내용, 그렇지 않으면 CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

mixed

일반적인 파일 로드 메소드입니다. 첫 번째 매개변수에 파일 경로와 이름을 제공하면 파일을 열어 읽습니다. 기본적으로 데이터는 뷰 파일처럼 브라우저로 전송되지만 두 번째 매개변수를 boolean TRUE로 설정하면 데이터를 문자열로 반환합니다.

language($files[, $lang = ''])
매개변수:
  • $files (mixed) – 언어 파일 이름 또는 여러 언어 파일의 배열

  • $lang (string) – 언어 이름

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

이 메소드는 언어 로드 메소드의 별칭입니다: $this->lang->load()

config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
매개변수:
  • $file (string) – 설정 파일 이름

  • $use_sections (bool) – 설정 값을 자체 섹션으로 로드할지 여부

  • $fail_gracefully (bool) – 실패 시 단순히 FALSE를 반환할지 여부

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

이 메소드는 설정 파일 로드 메소드의 별칭입니다: $this->config->load()

is_loaded($class)
매개변수:
  • $class (string) – 클래스 이름

반환:

찾은 경우 싱글톤 속성 이름, 찾지 못한 경우 FALSE

반환 형식:

mixed

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

참고

여기서 “클래스”는 라이브러리와 드라이버를 의미합니다.

요청한 클래스가 로드된 경우 메소드는 CI Super-object에서 할당된 이름을 반환하고, 로드되지 않은 경우 FALSE를 반환합니다:

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

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

중요

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

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

$this->load->is_loaded('Form_validation');      // 'fv' 반환
add_package_path($path[, $view_cascade = TRUE])
매개변수:
  • $path (string) – 추가할 경로

  • $view_cascade (bool) – 캐스케이딩 뷰 사용 여부

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

패키지 경로를 추가하면 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) – 제거할 경로

반환:

CI_Loader 인스턴스 (메소드 체이닝)

반환 형식:

CI_Loader

컨트롤러가 애플리케이션 패키지의 리소스 사용을 마치고, 특히 작업하려는 다른 애플리케이션 패키지가 있는 경우 패키지 경로를 제거하여 Loader가 해당 디렉터리에서 리소스를 더 이상 찾지 않도록 할 수 있습니다. 마지막으로 추가된 경로를 제거하려면 매개변수 없이 메소드를 호출하세요.

또는 특정 패키지 경로를 제거하려면 패키지에 대해 add_package_path()에 이전에 제공한 것과 동일한 경로를 지정합니다:

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
get_package_paths([$include_base = TRUE])
매개변수:
  • $include_base (bool) – BASEPATH를 포함할지 여부

반환:

패키지 경로의 배열

반환 형식:

array

현재 사용 가능한 모든 패키지 경로를 반환합니다.