Header

  1. View current page

    CakePHP 매뉴얼 - CakePHP.co.kr

Profile_img_60x60_06
1 23

02. 기본 개념 (Basic Concepts)

 

2. 기본 개념 (Basic Concepts)#

 

2.1. 머리말#

이 장에서는 Cake 에 내장되어 있는 MVC 개념에 대해 간략하게 소개한다. MVC (모델 뷰 컨트롤러) 패턴을 처음 대한다면, 여러분을 위한 장이 될 것이다. 우선, 일반적인 MVC 개념에 대해 검토한 뒤, CakePHP 의 MVC 의 구제척인 애플리케이션을 만든다. 그후 MVC 패턴을 사용한 CakePHP 의 간단한 예를 몇가지 소개하겠다.

 

2.2. MVC 패턴#

모델-뷰-컨트롤러는 코드를 논리적으로 분리하고, 재활용하기 용이하며, 관리하기 쉽고, 일반적으로 개선된 소프트웨어 디자인 패턴이다. 모델-뷰-컨트롤러는 집필그룹 Gang for Four 에 의해 처음 소개되었다. Dean Helman 은 다음과 같이 썼다 (Objective Toolkit Pro white paper 에서 인용) :

 

" MVC 패러다임은 애플리케이션, 또는 애플리케이션의 일부분까지도 모델, 뷰, 컨트롤러라고 하는 3개의 부분으로 분할하는 방법이다. MVC 는 본래부터 입력, 처리, 출력이라고 하는 지금까지 이용되어 왔던 역할을 하고, GUI 의 영역에서 확실히 자리매김하기 위해 개발된 것이다."

입력 -> 처리 -> 출력

컨트롤러 -> 모델 -> 뷰

"유저의 입력, 외부 세계의 모델링, 그리고 유저의 눈으로 보이는 피드백으로 각각 분할되어,모델,뷰 포트,컨트롤러 오브젝트에 의하여 처리된다.컨트롤러는 유저로부터 마우스와 키보드의 입력을 포착하고,유저의 액션을 커맨드에 결부시킨다.그것은 모델과(또는) 뷰 포트에 보내고, 적절한 변화를 가져온다.모델은 하나 또는 여러개의 데이터 요소를 관리하고, 그 상태에 관한 질의에 반응한다. 그리고 상태를 변경하라는 지시에 반응한다. 뷰 포트는 사각형의 디스플레이를 관리하고, 그래픽와 텍스트의 조합으로 유저에게 데이터를 제공한 책임을 갖는다."

 

Cake 의 용어에서, 모델은 특정한 데이터베이스의 테이블/레코드,  다른 테이블이나 레코드와의 관계를 나타낸다. 모델은 또한 데이터의 검증 규칙도 포함하고 있고, 모델 데이터가 삽입또는 갱신될 때 사용된다. view 는 Cake 의 출력 파일로, PHP 코드가 기록된 일반적인 HTML 파일이다. Cake 의 컨트롤러는 서버로부터의 리퀘스트를 처리한다. 컨트롤러는 유저의 입력(URL 과 POST 데이터)를 접수, 비즈니스 로직을 적용하여 모델을 사용하여 데이터베이스의 데이터를 읽고 쓰고, 마지막으로 출력 데이터를 적절한 출력 파일에 보낸다.

애플리케이션을 가능한 간단하게 조직화하기 위해 Cake 는 단지 오브젝트의 관계 관리만을 위해가 아니라 파일의 저장 방법까지 관리하기 위해 이 패턴을 이용한다. 자세한 것은 다음 부분에 설명한다.

 

2.3. Cake 의 파일 배치 개요#

서버에 Cake 의 압축을 풀면, 3개의 주요 폴더가 나타난다.

 

  1. app
  2. cake
  3. vandors

 

cake 폴더에는 Cake 의 핵심 라이브러리가 있으며, 일반적으로 건드릴 필요가 없다.

 

app 폴더에는 애플리케이션의 구체적인 폴더나 파일이 들어갈 것이다.  cake 폴더와 app 폴더를 분리함으로써, 여러 app 폴더에 하나의 Cake 라이브러리를 공유할 수 있다. 이로써 CakePHP 의 업데이트도 간단하게 된다. 최신 버전의 CakePHP 를 다운로드하여 현재의 핵심 라이브러리를 덮어쓰기만 하면 된다. 자신의 app 를 위해 작성했던 코드가 덮어 씌워질 걱정이 없다.

 

vendors 디렉토리는 써드 파티의 라이브러리를 저장하는 장소이다. vendors 에 관해 나중에 좀더 설명하겠지만, 기본적인 개념으로 vendors 디렉토리에 저장된 클래스에는 Cake 의 vendor() 함수를 사용해 접근할 수 있다.

 

전체 파일 구조에 대해 보자

 

  1. /app
        /config          - 데이터베이스, ACL 등의 설정 파일

        /controllers     - 컨트롤러는 이 디렉토리에 둔다.
            /components  - 컴포넌트는 이 디렉토리에 둔다.

        /index.php       - /app 를 DocumentRoot 로 쓰이도록 한다.

        /models          - 모델은 이 디렉토리에 둔다.
     
        /plugins         - 플러그인은 이 디렉토리에 둔다.

        /tmp             - 캐시와 로그로 사용

        /vendors         - 이 애플리케이션에 이용하는 써드 파티 라이브러리

        /views           - 뷰 파일은 이 디렉토리에 둔다.
            /elements    - 엘러먼트, 소형 뷰들은 이 디렉토리에 둔다.
            /errors      - 커스텀 에러 페이지는 이 디렉토리에 둔다.
            /helpers     - 헬퍼는 이 디렉토리에 둔다.
            /layouts     - 애플리케이션 레이아웃 파일은 이 디렉토리에 둔다.
            /pages       - 동적으로 작성하지 않아도 좋은 파일은 이 디렉토리에 둔다.

        /webroot         - 애플리케이션의 DocumentRoot
            /css
            /files
            /img
            /js

    /cake                - Cake 의 핵심 라이브러리. 이 디렉토리에내의 어떤 파일도 편집해서는 안 된다.

    index.php          

    /vendors             - 서버 전체가 사용하는 써드 파티의 라이브러리

    VERSION.txt          - 현재 사용하고 있는 Cake 의 버젼을 알 수 있다.

Tags

History

Last edited on 11/06/2007 11:43 by ainoai

Comments (2)

  • today!s

    vandors -> vendors

    12/18/2008 17:29
  • StudioEgo

    이건 Ruby on Rails를 보는 듯한 착각이^^

    12/24/2008 03:16
You must log in to leave a comment. Please sign in.