CodeIgniter

MVC 디자인 패턴

수업 소개

이미 CodeIgniter의 기본적인 골격인 Controller, Model, View를 살펴봤다. 이것들을 모아서 MVC라고 하는데 이번 시간에는 MVC에 대한 일반적인 정의를 간단히 알아보고, CodeIgniter에서는 MVC 패턴을 어떻게 구현하고 있는가를 알아보자. 복습의 성격도 있는 수업이다. 

디자인 패턴

디자인 패턴은 건축으로치면 공법에 해당하는 것으로 소프트웨어의 개발 방법을 공식화 한 것이다. 소수의 뛰어난 엔지니어가 해결한 문제를 다수의 엔지니어들이 처리 할 수 있도록 한 규칙이면서, 구현자들 간의 커뮤니케이션의 효율성을 높이는 기법이다. (위키피디아 참고)

MVC

MVC란 Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론이다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다. 

Web과 MVC

위의 개념을 웹에 적용해보자. 

  1. 사용자가 웹사이트에 접속한다. (Uses)
  2. Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)
  3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
  4. Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)
  5. 데이터가 반영된 VIew는 사용자에게 보여진다. (Sees)

CodeIgniter와 MVC

Controller

사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. 

Model

일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. 이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 이 관계가 강제적이지 않기 때문에 규칙을 일관성 있게 정의하는 것이 필요하다.

View

View는 클라이언트 측 기술인 html/css/javascript들을 모아둔 컨테이너이다. 

CI의 MVC 규칙

아래는 CI에서 Controller과 Model과 View 간의 관계를 시각화한 것이다. 

댓글

댓글 본문
작성자
비밀번호
  1. 맞아요 잘못된것 같네요.
    대화보기
    • 엄모닝
      정말 핵심만 집어주시는 좋은강의에요^^
      정말 감사합니다!!!!
    • 보보
      맞아요 잘못된것 같아요.
      대화보기
      • "CI의 MVC 규칙"에서

        $this->topic_model->get($id); 의 get이 Model 파일에 get 함수로 가야하는데 view의 array로 잘못 연결된 것 같습니다.
      • JustStudy
        고맙습니다
      • ttylbj
        정말 좋은설명이네요
      • 짱짱맨
        와~ 설명 진짜 잘하심~짱짱맨이심돠!
      • thoth
        감사합니다 :)
      • CreeJee
        https://github.com......mvc
        이걸로 한번 해보시는게 컼
        살려줘여
      • 샤핀
        한가지 질문이 생겼습니다.
        MVC모델에 대해서 찾아보니 모델1 , 모델2, 모델3!? 까지 있는 거 같고 이건 기존 모델들을 발전시킨 형태라고 들었는데요. 설명하신 MVC는 1번째 모델 설명인가요..?
        그리고 mvp 모델 패턴도 있고 , mvvm 모델패턴이 있다고 하는데, 이런 패턴들에 대한 설명 부탁 드려도 될까요? ^^;; 구글링에서 글로 찾은 것들이 잘 이해가 안가서요.
        혹은 잘 설명된 곳이 있다면 링크 좀 부탁 드립니다.
      • jio1122
        정말 감사합니다
      • 김승갑
        좋은 강의 감사합니다. 많이 배워가네요 :D
      • mocowood
        다 topic이라고 되있으니까 어려운것 같습니다. 연결을 a,b,c,로 나누면 이해가 않을까요.
      • egoing
        수정했습니다 ^^
        대화보기
        • boanuge
          "Web과 MVC" 부분에서 "Manupluates" -> "Manipulates" 오타요. :)
        • 보수
          controller에서 model의 get함수를 호출하는것 같은데 화살표가 잘못되있는거 아닌가요?
        • 불꽃
          좋은 강의 감사합니다^^
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기