기본 콘텐츠로 건너뛰기

로더 Loader Class

로더 Loader Class

https://cikorea.net/user_guide_2.1.0/libraries/loader.html

로더 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_partyfolder. 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'); // 로드됨

from http://devlink.tistory.com/273 by ccl(A) rewrite - 2020-03-07 10:21:41

댓글

이 블로그의 인기 게시물

PHP framework 종류

PHP framework 종류 분류 전체보기 (1461) API (0) Android (19) Common (11) Component (0) adb (2) DDMS (1) GCM (4) HTTP (0) sqlite (1) View (0) build (0) Bigdata (4) Common (1) Hadoop (2) Spark (0) SQL on Hadoop (1) Cloud (12) Common (8) Multitenancy (2) OpenStack (0) UCloud (2) Computer Science (24) Common (4) Asynchronous IO (1) Cache (6) Distributed (0) Message Queue (1) Parallel Computing (5) Software Engineering (7) DB (172) Common (32) HSQLDB (1) In-memory DB (0) MariaDB (2) MongoDB (30) MySQL (69) NoSQL (8) Oracle (17) ORM (6) Redis (1) SQL Server (6) Design Pattern (7) Common (7) Programming paradigms (0) Reactor (0) Development (459) Common (37) AngularJS (3) Bootstrap (3) C (22) C++ (0) CSS (32) HTML (31) HTML5 (2) Java (118) JavaEssential (25) JSP & Servlet (33) JavaScript (69) jQuery (26) jQuery Mobile (4) Linux Programming (3) python (3) PHP (21) Reactive Streams (0) ShellScript (5) UML (6) Windows Programming (2) XML (14) Framework & Platform (161) Common (8) EFL (1) mybati

MariaDB 에서 access denied for user 'root' 문제

MariaDB 에서 access denied for user 'root' 문제 heidisql 등의 원격 접속 툴을 이용해도 접속이 안 됐다. 포트, 방화벽 설정 등등 모두 확인해 봤고 로컬에서 잘 돌아가는 데도 원격 접속이 안됐다. 사실 원격 접속만 안 되면 상관 없는데, codeigniter에서도 똑같이 로그인을 못해서 자꾸 에러가 났었다. 일단, MariaDB는 10.4부터 root 권한 소유자에게 따로 비밀번호를 물어보지 않는다. 즉, 루트 계정으로 로그인했으면 그냥 콘솔에 mysql 치면 접속이 된다. 물론 다른 유저는 전처럼 비밀번호를 물어본다. 나는 이 root 계정으로 로그인을 며칠째 계속 시도해 봤는데 계속 안됐다.... 포트 문제도 아니었고 딱히 통신 문제도 아니었다. 심지어 SSH 접속 계정도 root 였다. 해답은 새로운 계정을 파서, 그 계정으로 접속을 하니까 잘 됐다. 계정 만드는 SQL 문이야 검색하면 바로 나올 거니까 따로 적진 않겠다.사실 별 내용 없는 건 아는데 새 계정을 파서 시도하란 말을 며칠 내내 구글을 뒤진 다음에야 본 것 같아서, 혹시 같은 어려움을 겪는 사람들이 있다면 빨리 해결할 수 있었으면 좋겠다. from http://skyseven73.tistory.com/5 by ccl(A) rewrite - 2020-03-11 02:54:31

[공학] 목차

[공학] 목차 자동차공학 컴퓨터공학 컴퓨터공학 | 개발환경 컴퓨터공학 | 웹개발 컴퓨터공학 | 모바일개발 ✓ 컴퓨터공학 | 운영체제 컴퓨터공학 | 프로그래밍 컴퓨터공학 | 네트워크 컴퓨터공학 | 데이터베이스 from http://sanctacrux.tistory.com/679 by ccl(A) rewrite - 2020-03-12 16:54:22