728x90


우리는 이때까지 controller를 사용해 왔다.

지금 까지는 이해하지 못하고 그냥 화면에 표시되기 위해서 사용했다면

이번에는 거기에 대해서 조금 알아보도록하자.


mvc패턴 역시 디자인 패턴이라고 할 수 있다.

이 패턴은 코드를 3가지로 분리하는 방법론을 정한다.

실제로 대부분의 프로그램의 경우 돌아가는 원리는 DB(DBMS가 아닐지라도)에서 값을 가져온다.

그리고 그 값을 가지고 와서 여러가지 logic을 실행한다.

그리고 그 결과를 화면에 출력하는 총 3가지의 과정의 거의 무조건 들어 있다.

여기서 model은 db에서 값을 가져와서 그걸 언어상에서 쓸 수있는 데이터로 만들어 주는 로직을 전부 의미한다.

controller는 처리 로직을 의미한다. 여기서 controller의 처리로직에는 model을 가공하는 부분은 없다.

model을 가공하는 부분역시 model이 담당한다.

마지막으로 controller의 처리된 결과 데이터를 이용해서 화면에 보여주는게 view이다.

즉 실제로 프로그래밍 할때 가장 중요한 부분은 controller라고 할 수 있다.


다시 한번 간단한 controller를 만들어 보자.


<?php //Hello.php
defined('BASEPATH') OR exit('No direct script access allowed');

class Hello extends CI_Controller {

public function index()
{
echo '<head>';
echo '<meta charset=\'utf-8\'>';
echo '</head>';
echo 'hello everybody';
}
}

컨트롤러를 제작할때 가장 중요한것 세가지는 첫째로 클래스로 만든다는것,

둘째로 CI_Controller를 상속해야한다는 것, 셋째로는 controller파일안에 들어있어야한다는 것이다.


위의 세가지가 충족됬다면 Codeigniter는 자동으로 라우팅을 하게된다.

이제 여러분은 아무 후속작업을 거치지 않아도 위의 페이지에 접근할 수 있다.


여기서 Controller안의 메소드로 index를 포함하고 있어야한다.

반드시 index일 필요는 없지만 index를 사용해서 하는게 url상에서 편하다.

예를들어서 uri를 보자. index.php/hello/index로 접근하고 있다.

이는 Hello클래스의 index메소드에 접근한 것이다.

그런데 예외적으로 index에 한해서만 index를 생략할 수 있다.


보다시피 index를 생략해도 index메소드를 실행하는것을 알 수 있다.

만약 다른 uri를 만들고 싶다면(새로운 메소드) 그 역시 가능하다.


<?php //Hello.php
defined('BASEPATH') OR exit('No direct script access allowed');

class Hello extends CI_Controller {

public function index()
{
echo '<head>';
echo '<meta charset=\'utf-8\'>';
echo '</head>';
echo 'hello everybody';
}

public function hoho(){
echo '<head>';
echo '<meta charset=\'utf-8\'>';
echo '</head>';
echo 'lol!';
}
}


의도한 대로의 출력을 확인할 수 있다.


여기서 중요한건 controller에서 반드시 view를 호출할 필요는없다는 것이다.

이는 강제가 되는건 아니다. 물론 권장하지는 않는다.

view는 그냥 화면에 출력하기 위한 또다른 부속품일 뿐이다.

다음 시간에 view에대해서 알아보도록 하자.

+ Recent posts