제목 | $input->load->db 원리 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | cloba | 작성시각 | 2016/12/28 16:36:40 |
|
|||
안녕하세요. php에 입문하여, CondeIgniter를 배우고 있는 3개월된 신입입니다. CondeIgniter를 공부하면서 객체에 접근할 때는 ->를 배열에 접근할 때는 []을 사용했었는데요.
그러다 의문점이 생겼습니다. 흔히 사용하는 $this->load->model('a'); $this->db->insert() 등은
현재 class에서 load라는 객체 참조변수를 타고 a라는 이름을 가진 model을 실행시킨다. 현재 class에서 db라는 객체 참조변수를 통해 insert()이라는 메서드를 실행시키는 것이 맞나요? 그런데 db 나 load는 어디에 존재하나요? 아래는 제가 ci_controller API(?)를 찾아봤는데 전혀 이런 내용은 없길래 너무 궁굼합니다.
그리고 $this->load->helper('c'); <-- 이 경우는 c라는 helper를 객체로 만들어서 접근하는 것인가요? ci의 기본원리에 대해 너무나 궁굼합니다. 알려주세요!
|
|||
다음글 | 경로에 대해 질문드립니다. (2) | ||
이전글 | CIBOARD의 사진 업로드 관련 문의 (1) | ||
변종원(웅파)
/
2016/12/28 17:14:39 /
추천
0
|
kaido
/
2016/12/28 17:20:54 /
추천
0
model 을 로드 선언 하면 CI_Controller 는 CI_Model 을 상속 받습니다. 내부 Model [사용자가 정의한 model 말고 CI 모델] 이 로드가 된거라서 객체 선언으로 사용이 가능합니다. 어딘가에서 불러오지 않고 객체 맴버를 호출 할 수는 없습니다 ㅎㅎ 아래 함수를 호출해서 확인해보세요. 생각보다 많은 클래스를 호출 하고 있음을 알게 될것입니다 ㅎㅎ print_r(get_declared_classes());
|
한대승(불의회상)
/
2016/12/28 17:35:48 /
추천
0
헬퍼와 라이브러리는 구조가 다릅니다. 헬퍼는 전역 사용자 정의 함수이고 라이브러리는 클래스죠. $this->load->helper('c'); 이 로드 명령어는 application/helper/c_helper.php 를 include 하라는 뜻입니다. include APPPATH . 'helper/c_helper.php'; 이 코드와 거의 동일하다고 생각하시면 됩니다. 정확한 로더의 구조는 웅파님 의견대로 CI_Loder를 분석해 보시는게 좋습니다. |
cloba
/
2016/12/29 08:52:31 /
추천
0
세 분 모두 많은 도움이 됐습니다. 그냥 뭣모르고 사용하던 CI의 원리에 조금 알게 되서 너무나 기쁩니다. 감사합니다.
|
index.php부터 Codeigniter.php -> 기타 등등 파일을 따라 가보시면 ci의 작동구조를 알 수 있습니다.
load나 db는 ci core에서 제어합니다.
클래스들인데 명시적으로 그렇게 사용하겠다라고 프레임워크 core에 정의를 한 것이죠.
load는 말 그대로 include_once or require_once 의 개념이라고 보시면 됩니다. core/Loader.php 한번 열어보세요.