출처 : http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc
Model-View-Controller (MVC)
- A typical Workflow
Yii는 웹 프로그래밍에서 널리 사용되는 모델 - 뷰 - 컨트롤러 (MVC) 디자인 패턴을 구현합니다. MVC는 사용자 인터페이스에서 비즈니스 로직을 분리하는 것을 목적으로 하고 있습니다. 이렇게 함으로써 개발자는 다른 영향을 주지 않고 한쪽을 쉽게 변경할 수 있습니다.
MVC에서는
모델 (M)은 정보(데이터)와 비즈니스 규칙을 표현하고
뷰 (V)는 폼이나 텍스트와 같은 사용자 인터페이스를 포함하고
컨트롤러 (C)는 모델과 뷰의 통신을 관리합니다 .
MVC를 구현하는 것 외에도 Yii는 응용 프로그램은 프론트 컨트롤러도 도입하고 있습니다. 이것은 요청 처리를 위한 실행 컨텍스트를 캡슐화 한 것입니다. 응용 프로그램은 사용자 요청에 대한 몇 가지 정보를 수집하여 추가 처리를 진행하기에 적절한 컨트롤러에 요청을 전달합니다.
다음 그림은 Yii 응용 프로그램의 정적 구조를 보여줍니다.
Static structure of Yii application
![](http://yiikr.com/data/board/201306/3457_image.png)
1. 일반적인 워크 플로우
다음 그림은 Yii 응용 프로그램이 사용자 요청을 처리 할 때의 일반적인 워크 플로우를 보여줍니다.
Typical workflow of a Yii application
![](http://www.yiiframework.com/tutorial/image?type=guide&version=1.1&lang=en&file=flow.png)
- 사용자가 URL http://www.example.com/index.php?r=post/show&id=1 에 따라 요청합니다. 웹서버는 부트 스트랩 스크립트 index.php 를 실행하여 요청을 처리합니다.
- 부트 스트랩 스크립트(index.php)는 응용 프로그램 인스턴스를 생성하고 그것을 실행합니다.
- 응용 프로그램은 상세한 사용자 요청 정보를 request라는 응용 프로그램 구성요소에서 얻습니다.
- 응용 프로그램은 urlManager라는 응용 프로그램 구성요소 덕분에 요구되는 컨트롤러와 액션을 결정합니다. 이 예제에서는 컨트롤러는 post에서 PostController 클래스를 보여줍니다. 그리고 액션 show이지만 그 실제 의미는 컨트롤러에 의해 결정됩니다.
- 응용 프로그램은 사용자 요청을 계속 처리하기 위해 요청된 컨트롤러의 인스턴스를 생성합니다. 컨트롤러는 액션 show가 컨트롤러 클래스의 actionShow 방법이라고 결정합니다. 그리고 행동에 연관된 필터 (예를 들어 액세스 제어 및 벤치 마크)을 생성하여 실행합니다. 작업은 필터에 의해 허용된 경우에만 실행됩니다.
- 액션은 ID가 1 인 Post 모델 을 데이터베이스에서 읽습니다.
- 액션은 Post 모델을 사용하여 show 라는 뷰를 표시합니다.
- 뷰는 Post 모델의 특성(속성)을 읽어봅니다.
- 뷰는 여러 위젯을 실행합니다.
- 뷰가 렌더링한 결과는 레이아웃에 포함됩니다.
- 액션은 뷰 그리기를 완료하고 결과를 사용자에게 표시합니다.