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’); ?> 이렇게 선언해도 된다.