로더 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
현재 사용 가능한 패키지 경로 반환.