2026년 11월 8일 일요일
미단재

PHP FREAMEWORK CODEIGNITER 기본 형태

사용자 삽입 이미지application 디렉토리 하단의 controllers 디렉토리가 컨트롤의 역할을, views 디렉토리는 뷰의 역할을, models 디렉토리는 모델의 역할을 한다.

서브 디렉토리 형태로 사용할 수 있으며, 기능별 혹은 프로그램 그룹별로 디렉토리를 나누어 이용할 수 있다.
(예 http://localhost/index.php/blog/ -> 블로그, http://localhost/index.php/blog/index 도 동일한 결과이다
기본이 되는 index 함수는 생략가능. 그러나 index 뒤에 인자를 준다면 써줘야 한다)

컨트롤의 경우에는 디렉토리를 나누지 않고 controllers 디렉토리에 위치시키는 것도 괜찮다.
작업해보니 각 프로그램 그룹별(블로그, 포토갤러리 등) 컨트롤 프로그램은 1개, 혹은 2개 정도였고
많더라도 대여섯개 정도인데 굳이 디렉토리를 나눌 필요까지는 없을 듯 하다. (나눠도 상관은 없다. ^^;)

모델과 뷰의 경우에는 꼭 컨트롤과 짝이 되는 모델과 뷰를 사용하지 않아도 된다.
위 그림의 예에서 보면 컨트롤에서
   $this->load->model('blog_model'); -> /application/models/blog_model.php 그러나 필요한 모델, 혹은 공통 모델을 따로 정의해놨다면 그 모델을 로딩하고 펑션을 가져다 쓰면 된다.
자주 쓰는 공통 기능은 공통 모델파일로 따로 만들어놓는 것이 편하다.

컨트롤에서 모델에서 데이터를 가져오고(혹은 가공하고) 뷰로 넘길때는 배열형태로 넘긴다.
 

$data['page_title'] = 'Your title';

$this->load->model('blog_model'); // 모델을 선언

$this->load->view(‘common/top'); // 뷰 파일 선언. 데이터 넘길 필요가 없는 경우

$data['query'] = $this->blog_model->get_last_ten_entries(); // 모델에서 데이터를 가져옴(배열)

$this->load->view('blogview', $data); // blogview.php 뷰파일을 로딩한다.
                                                // $data변수로 배열을 넘김
                                                // 뷰파일에서는 첫줄 $data['page_title']의 경우에는
                                                // $page_title 로 사용한다.
       
                                                // $data['query']는 배열로 넘긴것이라 foreach를 이용


통 프레임의 경우 상하단 include 시키는 파일은 컨트롤에서 위의 예문처럼 선언하거나
뷰파일 상단에 <? echo $this->load->view('top'); ?> 이렇게 선언해도 된다.

이어 읽을 글

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.