초보자를 위한 패턴: MVC vs MVP vs MVVM. MVC 아키텍처 패턴 Mvc 설명




부트스트랩 프레임워크: 빠른 적응형 레이아웃

Bootstrap 프레임워크의 적응형 레이아웃 기본 사항에 대한 단계별 비디오 과정입니다.

강력하고 실용적인 도구를 사용하여 간단하고 빠르고 효율적으로 조판하는 방법을 알아보세요.

주문하고 대금을 받을 수 있는 레이아웃입니다.

무료 코스 "WordPress 사이트"

WordPress CMS를 마스터하고 싶나요?

WordPress에서 웹사이트 디자인 및 레이아웃에 대한 강의를 받으세요.

테마 작업 및 레이아웃 잘라내기 방법을 알아보세요.

CMS WordPress에서 웹사이트 디자인, 레이아웃 및 설치를 그리는 방법에 대한 무료 비디오 강좌!

*스크롤을 일시중지하려면 마우스를 올리세요.

뒤로 앞으로

웹 개발에 대한 친근한 접근 방식: MVC 모델

MVC란 무엇입니까?간단히 말해서, 보다 구조화된 코드와 애플리케이션 전체를 달성할 수 있는 개발 접근 방식입니다.

MVC는 모델-뷰-컨트롤러를 나타냅니다. 이에 대해 더 자세히 이야기합시다.

오늘날 웹 애플리케이션(사이트)을 생성하는 가장 일반적인 두 가지 방법이 있습니다.

첫 번째 방법, "클래식"이라고 부르겠습니다. 하나의 파일에 다양한 프로그래밍 및 마크업 언어의 코드가 포함될 수 있다고 가정합니다.

파일의 시작 부분에서 데이터베이스로부터 일부 정보를 얻기 위해 데이터베이스에 대한 쿼리가 이루어진다고 가정해 보겠습니다. 여기서는 데이터베이스와 상호 작용하도록 설계된 특수 쿼리 언어인 SQL 언어를 다루고 있습니다.

그 후에는 원칙적으로 페이지의 html 마크업이 시작됩니다(그것 없이는 어디에 있을까요?). 또한 html 마크업 내부에는 PHP 코드가 올바른 위치에 삽입되어 사이트를 제어하고 사이트의 논리가 됩니다. 전체적으로 SQL, (X)HTML 및 PHP라는 하나의 파일이 있습니다. 이것은 이미 뒤죽박죽입니다. 그림을 완성하기 위해 여기에 CSS와 약간의 Javascript를 추가하는 것을 잊지 마십시오. 결국 우리는 이 파일에서 악마 자신이 다리를 부러뜨릴 정도로 엉망이 될 것입니다.

물론 처음에는 그 안에서 무슨 일이 어떻게 진행되고 있는지, 왜 필요한지, 특정 기능을 추가/제거/수정하기 위해 어디를 변경해야 하는지 기억할 것입니다. 그러나 몇 달 안에 여러분은 당황한 표정으로 코드를 살펴보고 무엇이 무엇에 연결되어 있는지, 파일을 변경한 후 어떤 변경 사항이 "구현"될 것인지 등을 기억하려고 노력할 것입니다.

나는 이 접근법을 완전히 버려야 한다고 말하는 것은 아니지만, 현명하고 매우 신중하게 사용해야 한다는 것은 분명합니다.

두 번째 방법계획의 사용과 정확하게 연결됨 "모델-뷰-컨트롤러".

이 접근 방식의 본질은 무엇이며, 이를 사용하면 작업에 어떻게 도움이 될 수 있습니까?

이 접근 방식의 주요 아이디어는 다음과 같습니다. 동질적인 요소를 다른 파일로 분리. 매우 간단하게 말하면 하나의 파일 - 하나의 언어입니다. 그러나 이것은 매우 대략적인 예입니다. 이것은 극히 드뭅니다.

다른 파일에 다른 언어를 유지한다는 아이디어 외에도 핵심 개념은 응용 프로그램에서 수행하는 기능에 따라 파일을 그룹으로 나누기.

여기서는 MVC 모델에 대해 더 자세히 접근하기 시작합니다.

이 모델에는 웹사이트 개발과 관련된 모든 파일을 다음과 같이 나누는 작업이 포함됩니다. 세 그룹:

1. "모델" 그룹의 파일
2. "컨트롤러" 그룹의 파일
3. "보기" 그룹의 파일

여기서는 MVC 체계의 이름이 관례라는 점을 즉시 이해하는 것이 중요합니다. 물론 애플리케이션에는 많은 모델, 컨트롤러 및 뷰(즉, 수행하는 기능과 내부 구조에 따라 이러한 그룹에 속하는 파일)가 있을 수 있습니다.

그럼 살펴보자 MVC 모델과 "고전적인" 개발 방법의 비교 다이어그램.


왼쪽에는 위에서 이야기한 내용이 정확히 표시됩니다. 페이지 상단에는 데이터베이스에 대한 SQL 쿼리가 있습니다. 그런 다음 마크업과 PHP를 삽입합니다.

오른쪽에는 MVC 모델의 가장 간단한 다이어그램이 있습니다. 이 계획 내에서 데이터베이스와의 상호 작용과 관련된 작업은 모델에서 발생합니다.: 데이터 조회, 수정 및 삭제, 특정 테이블의 레코드 수 계산 등

컨트롤러에는 애플리케이션 로직이 포함되어 있습니다., 즉. 그 기능을 결정하는 것.

뷰는 최종 사용자에게 표시되도록 되어 있습니다..

다이어그램의 양방향 화살표는 "모델 - 컨트롤러" 및 "컨트롤러 - 뷰" 쌍에 관계가 있음을 보여줍니다. 다음 다이어그램을 예로 들어 이 관계를 더 자세히 살펴보겠습니다.


이 다이어그램에서는 사용자 브라우저와 데이터베이스라는 두 가지 새로운 요소를 추가했습니다. 일반적인 용어로 전체주기를 살펴 보겠습니다.페이지가 사용자에게 표시될 때까지 브라우저에서 특정 URL에 액세스합니다.

1. 사용자가 주소를 입력하면 브라우저가 컨트롤러에 접속합니다.

2. 컨트롤러가 모델에 액세스합니다.

3. 모델이 데이터베이스에 액세스합니다(예: 출력에 필요한 정보를 얻기 위해).

4. 데이터베이스의 정보가 모델로 다시 전달됩니다.

5. 정보는 모델에서 컨트롤러로 전송됩니다.

6. 컨트롤러는 이 정보를 뷰에 전달합니다.

7. 컨트롤러를 사용하여 브라우저에 뷰가 표시됩니다.

이것이 이 모델의 일반적인 작동 방식입니다. 보시다시피, 이 다이어그램에서는 브라우저와 데이터베이스가 다소 별개로 나타납니다. 정말, 컨트롤러는 URL의 일부이므로 브라우저는 컨트롤러에만 액세스할 수 있습니다.. 방문자는 컨트롤러 이외의 어떤 것에도 접근할 수 없습니다. 이것을 이해하는 것이 중요합니다. 사람은 주소 표시줄을 통해 보기나 모델에 액세스할 수 없습니다. 컨트롤러와만 상호작용합니다.

이와 관련하여 컨트롤러를 일종의 "유통 센터"라고 말할 수 있습니다. 직접 확인해 보세요. 컨트롤러는 사용자 요청을 처리하고, 컨트롤러는 모델에 액세스하며, 컨트롤러는 브라우저에 뷰를 표시하기 위한 중개자입니다.

두 번째로 눈에 띄는 요소는 데이터베이스입니다. 그리고 그것은 옳습니다. MVC 개념의 틀 내에서 다음이 허용됩니다. 모델만 데이터베이스와 작동해야 합니다.그러나 때로는 이 원칙이 위반되기도 한다. 이 경우 데이터베이스와의 상호 작용은 컨트롤러나 뷰에서 수행됩니다.

물론 너무 멀리 나아가서 MVC의 구조와 원칙을 위반해서는 안 되지만 때로는 이러한 규칙에서 벗어나는 것이 코드 가독성을 높이고 애플리케이션의 작동 방식을 이해하는 측면에서 매우 유용할 수 있습니다.

모델, 그런데, MVC 스키마의 선택적 요소입니다.. 모델을 전혀 사용하지 않고도 필요한 모든 것을 구현하는 것이 가능합니다. 당연히 이 경우 컨트롤러와 뷰 파일에서 데이터베이스와 상호 작용하게 됩니다. 이미 이해하셨듯이 이는 그다지 좋은 형태는 아닙니다. 이 개념의 틀 내에서 작업하기로 결정한 후에는 모델을 사용하고 의도된 목적에 맞게 사용하는 것이 좋습니다.

우리는 "극단"을 보았지만 다이어그램 중앙에는 "모델 - 컨트롤러" 및 "컨트롤러 - 뷰" 상호 작용이 발생하는 삼위일체가 남아 있었습니다.

이 모델의 기본 사항을 연구한 후에는 이 접근 방식이 우리에게 무엇을 제공하는지, 그리고 왜 이것이 고전적인 접근 방식보다 더 바람직한지 생각해 볼 수 있습니다.

귀하의 작업에서 이러한 계획을 사용하는 것의 주요 이점은 이미 언급되었습니다. 코드와 애플리케이션의 구조를 전체적으로 증가시킵니다.. 제가 가장 좋아하는 CodeIgniter를 포함하여 많은 프레임워크 제조업체에서 MVC 모델을 채택했다는 것은 비밀이 아닙니다.

결국, 프레임워크란 무엇입니까?외국어를 버리면 이것은 단순히 웹사이트 개발에 필요한 특정 구조인 프레임워크일 뿐입니다. 이 구조는 도움을 받아 거의 모든 웹사이트를 만들 수 있을 만큼 보편적입니다. 동시에 매우 중요한 것은 프레임워크가 매우 유연하여 필요한 것을 정확하게 달성할 수 있다는 것입니다.

즉, 프레임워크는 구조 측면에서는 제한하지만 기능 측면에서는 제한하지 않는 유연한 프레임워크입니다.

MVC에 대한 질문으로 돌아가면 많은 프레임워크가 정확히 이 접근 방식을 사용한다는 것을 알 수 있습니다. MVC는 파일을 유형, 모델 및 컨트롤러로 나누는 상당히 명확한 애플리케이션 구조를 제공합니다. MVC 프레임워크와 모델을 사용하는 방법을 배우는 데 한 번 투자했다면 이 모든 것이 함께 많은 시간을 절약할 수 있습니다.

MVC 모델의 다른 장점은 다음과 같습니다. 기능에 따른 코드 구분. 더 이상 복잡한 SQL 쿼리, 마크업, PHP 코드를 뒤질 필요가 없습니다. 무언가를 수정하거나 변경해야 하는 경우 편집해야 할 파일이 무엇인지 정확히 알 수 있습니다.

아래에서 "views" 그룹에 속하는 파일의 일부를 볼 수 있습니다.


다음은 모델의 코드입니다.


컨트롤러의 모습은 다음과 같습니다.


보시다시피 매우 중요한 이점은 코드에서 뷰 분리. 이전에 표시되었던 페이지의 정보를 동일하게 유지하면서 어떻게든 사이트의 디자인이나 구조를 변경해야 하는 경우가 종종 있습니다. 그리고 여기에서 시간이 지남에 따라 점점 더 어려워지는 뒤죽박죽된 코드를 편집하기 시작합니다.

MVC 모델의 장점은 바로 다음과 같은 기능에 있습니다. 애플리케이션 로직 변경 시 사이트 디자인 편집 제외. 모델, 뷰, 컨트롤러의 세 가지 요소 중 하나를 변경할 수 있습니다. 이 경우 다른 요소는 어느 정도 자율적이므로 변경할 필요가 없습니다.

자율성 문제는 특히 모델 및 종과 관련이 있습니다. 일단 작성하고 나면 일반적으로 편집을 최소화하거나 전혀 하지 않고도 다양한 프로젝트에 성공적으로 사용할 수 있습니다. 이렇게 하면 유사한 코드를 반복해서 작성할 필요가 없으므로 많은 시간이 절약됩니다.

프레임워크 내에서 MVC 모델을 사용하면 얻을 수 있는 이점은 분명합니다., 예를 들어 동일한 CodeIgniter입니다.

모든 웹사이트에 유사하거나 심지어 동일한 기능이 많이 있다는 것은 비밀이 아닙니다. 피드백 양식이나 페이지 탐색만 기억하세요. 이것은 가장 눈에 띄는 "외부" 순간일 뿐입니다. 일반 사용자에게는 표시되지 않는 코드, 즉 서버에서 실행되는 코드에서 더 많은 유사점을 찾을 수 있습니다.

거의 모든 웹 개발자는 유사한 PHP 기능을 사용하고 유사한 데이터베이스 쿼리를 수행해야 하는 필요성에 직면해 있습니다. 프레임워크 제조업체는 여기서 매우 중요한 작업을 수행했습니다. 그들은 가장 자주 사용되는 기능을 별도의 파일로 그룹화하여 웹마스터와 웹 프로그래머에게 새로운 기회를 제공하려고 노력했습니다.

이제 구현 방법에 대해 너무 많이 생각하지 않고도 자주 필요한 작업을 수행할 수 있습니다. 수십 줄이 아닌 몇 줄의 코드를 작성하여 시간을 절약하고 애플리케이션을 구현하는 방법보다는 애플리케이션이 작동하는 방식의 논리에 더 중점을 둡니다..

그리고 이 모든 것은 MVC 개념의 프레임워크 내에서 발생하므로 프레임워크를 사용하여 거의 모든 결과를 얻을 수 있습니다. 동시에 높은 수준의 코드 가독성을 얻을 수 있습니다. 편안하고 생산적인 작업을 위해 또 무엇이 필요합니까?

후문:특정 작업을 더 쉽게 만들기 위해 만들어진 모든 구조는 작업을 더 쉽게 만들기 위해 만들어졌다는 점을 기억하세요.

MVC 원칙이 애플리케이션 구조를 이해하는 데 나쁜 영향을 미친다고 확신하는 경우에는 MVC 원칙을 고수해서는 안 됩니다. 모델 아래에서 "구부려야" 하는 사람은 당신이 아니라 당신 아래의 모델입니다.

드미트리 나우멘코

추신어떤 PHP 프레임워크를 마스터해야 할지 고민 중이신가요? CakePHP에 주목하세요. 위에서 설명한 MVC 패턴을 구현하고 있으며, 지금 당장 이 프레임워크의 기능에 대한 일반적인 아이디어를 얻을 수 있는 짧은 소개 비디오 과정을 시청할 수 있습니다.

자료가 마음에 들었고 감사 인사를 전하고 싶으신가요?
친구나 동료들과 공유해보세요!


제 생각에는 프로그래머뿐만 아니라 모든 개발자가 프로젝트의 최상의 확장성을 보장하기 위해 MVC를 알아야 합니다.

MVC는 소프트웨어 아키텍처일 뿐만 아니라 개발 개념이기도 합니다. 이 글이 MVC의 모든 비밀을 알려줄 것이라는 말은 아니지만, 처음에는 확실히 이해할 수 있을 것입니다. 그리고 http://pogugli.com/?74600

MVC(Model-View-Controller) 개념은 최근 몇 년 동안 웹 프로그래밍 세계에서 자주 언급되었습니다. 어떤 방식으로든 웹 애플리케이션 개발과 관련된 모든 사람은 어떤 방식으로든 이 약어를 접해본 적이 있을 것입니다. 오늘은 MVC 개념이 무엇인지, 왜 인기를 얻었는지 알아보겠습니다.

고대 역사

MVC는 프로젝트 패턴이 아니라 애플리케이션의 구조를 구축하는 방법, 이 구조에 있는 각 부분의 책임 및 상호 작용을 설명하는 디자인 패턴입니다.

물론 1979년에 다른 환경에 대해 처음 설명되었습니다. 그 당시에는 웹 애플리케이션에 대한 개념이 없었습니다. 팀 버너스 리는 90년대 초반에 월드와이드웹(WWW)의 씨앗을 뿌렸고 세상을 영원히 바꿔 놓았습니다. 오늘 우리가 사용하는 템플릿은 웹 개발을 위해 원본 템플릿을 적용한 것입니다.

웹 애플리케이션에서 이 구조가 큰 인기를 끌었던 이유는 매우 인기를 끌었던 두 가지 개발 환경인 Struts와 Ruby on Rails에 이 구조가 포함되었기 때문입니다. 이 두 가지 개발 환경은 나중에 생성된 수백 개의 개발 환경에 대한 경로를 설정합니다.

웹 애플리케이션용 MVC

MVC 디자인 패턴의 기본 아이디어는 매우 간단합니다. 애플리케이션의 다양한 기능에 대한 책임을 명확하게 분리해야 합니다.

이 애플리케이션은 세 가지 주요 구성요소로 나누어져 있으며, 각 구성요소는 서로 다른 작업을 담당합니다. 예제를 통해 구성요소를 자세히 살펴보겠습니다.

제어 장치

컨트롤러는 사용자 요청(사용자가 다양한 작업을 수행하기 위해 인터페이스 요소를 클릭할 때 HTTP GET 또는 POST 요청으로 수신됨)을 관리합니다. 주요 기능은 사용자가 지정한 작업을 수행하는 데 필요한 필수 리소스 및 개체의 작업을 호출하고 조정하는 것입니다. 일반적으로 컨트롤러는 작업에 적합한 모델을 호출하고 적절한 뷰를 선택합니다.

모델

모델은 애플리케이션을 제어하기 위한 개념을 나타내는 데이터를 작동하는 데 사용되는 데이터 및 규칙입니다. 모든 애플리케이션에서 전체 구조는 특정 방식으로 처리되는 데이터로 모델링됩니다. 애플리케이션(메시지 또는 책)의 사용자는 무엇입니까? 규칙에 따라 처리해야 하는 데이터만 처리됩니다(날짜는 미래를 가리킬 수 없으며 이메일은 특정 형식이어야 하며 이름은 X 문자를 초과할 수 없음 등).

모델은 사용자가 요청한 데이터(메시지, 책 페이지, 사진 앨범 등)에 대한 표현을 컨트롤러에 제공합니다. 데이터 모델은 사용자에게 어떻게 표시하든 관계없이 동일합니다. 따라서 데이터를 표시하기 위해 사용 가능한 보기를 선택합니다.

모델에는 애플리케이션 논리의 가장 중요한 부분, 즉 우리가 다루고 있는 문제(포럼, 상점, 은행 등)를 해결하는 논리가 포함되어 있습니다. 컨트롤러에는 기본적으로 애플리케이션 자체에 대한 조직적 논리가 포함되어 있습니다(하우스키핑과 유사).

보다

뷰는 모델에서 얻은 데이터를 표현하는 다양한 방법을 제공합니다. 데이터로 채워진 템플릿일 수 있습니다. 여러 가지 유형이 있을 수 있으며 컨트롤러는 현재 상황에 가장 적합한 유형을 선택합니다.

웹 애플리케이션은 일반적으로 컨트롤러, 모델 및 뷰 세트로 구성됩니다. 컨트롤러는 모든 요청을 받고 상황에 따라 다른 컨트롤러를 호출하여 작업을 수행하는 메인 컨트롤러로 설계할 수 있습니다.

예를 살펴 보겠습니다.

온라인 서점을 개발해야 한다고 가정해 보겠습니다. 사용자는 도서 보기, 등록, 구매, 현재 주문에 항목 추가, 도서 생성 또는 삭제(관리자인 경우) 등의 작업을 수행할 수 있습니다. 사용자가 카테고리를 클릭하면 어떤 일이 일어나는지 살펴보겠습니다. 공상우리 가게에서 구입할 수 있는 책의 제목을 보려면

책과 관련된 모든 작업(보기, 편집, 생성 등)을 처리하는 특정 컨트롤러가 있습니다. 그것을 부르자 books_controller.php우리의 예에서는. 또한 다음과 같은 모델이 필요합니다. book_model.php, 스토어 항목과 관련된 데이터 및 로직을 처리합니다. 결론적으로, 데이터를 나타내기 위해서는 도서 목록, 편집 페이지 등과 같은 여러 가지 보기가 필요합니다.

다음 그림은 특정 주제에 대한 도서 목록을 보기 위한 사용자 요청이 처리되는 방식을 보여줍니다. 공상:

컨트롤러(books_controller.php)는 사용자 요청(HTTP GET 또는 POST 요청)을 받습니다. 요청을 수신하고 books_controller.php를 호출하는 index.php와 같은 중앙 컨트롤러를 생성할 수 있습니다.

컨트롤러는 요청과 매개변수를 확인한 후 모델(book_model.php)을 호출합니다. 질문그녀는 그 주제에 관해 읽을 수 있는 책 목록을 가지고 있습니다 공상.

모델은 데이터베이스(또는 정보를 저장하는 다른 소스)로부터 데이터를 수신하고 필터와 필요한 논리를 적용한 다음 도서 목록을 나타내는 데이터를 반환합니다.

컨트롤러는 적절한 뷰를 사용하여 사용자에게 데이터를 제공합니다. 요청이 휴대폰에서 오는 경우 휴대폰 보기가 사용됩니다. 사용자가 특정 인터페이스 디자인을 사용하면 해당 뷰가 선택되는 식입니다.

장점은 무엇입니까?

MVC 개념을 사용하여 얻을 수 있는 가장 확실한 이점은 프레젠테이션 로직(사용자 인터페이스)과 애플리케이션 로직이 명확하게 분리되어 있다는 것입니다.

다양한 유형의 장치를 사용하는 다양한 유형의 사용자를 지원하는 것은 오늘날 일반적인 과제입니다. 요청이 개인용 컴퓨터에서 오는 경우와 휴대폰에서 오는 경우 제공되는 인터페이스가 달라야 합니다. 모델은 동일한 데이터를 반환하지만 유일한 차이점은 컨트롤러가 데이터를 출력하기 위해 다른 보기를 선택한다는 것입니다.

MVC 개념은 애플리케이션 로직에서 뷰를 분리하는 것 외에도 대규모 애플리케이션의 복잡성을 크게 줄여줍니다. 코드가 훨씬 더 구조화되어 솔루션을 더 쉽게 유지 관리, 테스트 및 재사용할 수 있습니다.

작업 환경을 사용하는 이유는 무엇입니까?

워크벤치를 사용하면 기본 MVC 구조가 이미 준비되어 있으므로 MVC 패턴과 일치하도록 적절한 디렉터리에 파일을 배치하여 구조를 확장하기만 하면 됩니다. 게다가 이미 작성되고 잘 테스트된 기능 세트도 갖게 됩니다.

MVC 워크벤치의 예로 cakePHP를 살펴보겠습니다. 설치 후에는 다음과 같은 세 가지 주요 디렉터리가 생성됩니다.

  • 케이크/
  • 벤더/

폴더 앱은 파일이 있는 곳입니다. 이곳은 애플리케이션의 일부를 개발하는 곳입니다.

폴더 내 cake는 cakePHP 파일을 호스팅합니다(워크벤치 기능).

폴더 공급업체는 타사 PHP 라이브러리를 저장하는 데 사용됩니다.

작업 영역(앱 디렉터리)의 구조는 다음과 같습니다.

  • 앱/
    • 구성/
    • 컨트롤러/
    • 장소/
    • 모델/
    • 플러그인/
    • 테스트/
    • 벤더/
    • 견해/
    • 웹루트/

컨트롤러는 컨트롤러 디렉터리에, 모델은 모델 디렉터리에, 뷰는 views 디렉터리에 배치해야 합니다!

워크벤치를 사용하기 시작하면 생성하거나 수정해야 하는 애플리케이션의 거의 모든 부분이 어디에 있는지 즉시 명확해집니다. 이 조직 자체는 애플리케이션 개발 및 유지 관리 프로세스를 크게 단순화합니다.

예제에서 워크벤치 사용

이 튜토리얼은 cakePHP를 사용하여 애플리케이션을 생성하는 과정을 보여주기 위한 것이 아니기 때문에 MVC 워크벤치 사용의 이점에 대한 설명과 함께 모델, 컨트롤러 및 뷰에 대한 코드만 보여줄 것입니다. 코드는 의도적으로 단순화되어 실제 애플리케이션에서 사용하기에 부적합합니다.

기억하세요, 우리는 서점과 해당 주제에 관한 전체 책 목록을 보고 싶어하는 호기심 많은 사용자를 보고 있었습니다. 공상. 컨트롤러는 사용자의 요청을 수신하고 필요한 조치를 조정했습니다.

따라서 사용자가 버튼을 클릭하자마자 브라우저는 지정된 URL을 요청합니다.

1 www.ourstore.com/books/list/fantasy

CakePHP는 패턴을 사용하여 URL 형식을 지정합니다. /컨트롤러/액션/param1/param2, 어디 행동컨트롤러에 의해 호출되는 함수입니다. 이전 클래식 형식에서 URL은 다음과 같습니다.

1 www.ourstore.com/books_controller.php?action=list&category=fantasy

제어 장치

cakePHP 작업 환경에서 컨트롤러는 다음과 같습니다:

1
BooksController 클래스는 AppController를 확장합니다(

함수 목록($category) (

$this ->set("책" , $this ->책->findAllByCategory($category));

}

함수 추가() ( ... ... )

함수 삭제() ( ... ... )

... ... } ?>

간단하지 않나요? 이 컨트롤러는 다음과 같이 저장됩니다. books_controller.php그리고 에 게시됨 /앱/컨트롤러. 여기에는 예제에 대한 작업을 수행하는 함수 목록과 책 관련 작업(새 책 추가, 책 삭제 등)을 수행하는 기타 기능 목록이 포함되어 있습니다.

작업 환경에서는 기성 솔루션이 많이 제공되므로 도서 목록만 작성하면 됩니다. 컨트롤러의 기본 기능을 이미 정의한 기본 클래스가 있으므로 이 클래스의 속성과 기능을 상속해야 합니다( 앱컨트롤러상속인입니다 제어 장치).

작업 목록에서 해야 할 일은 모델을 호출하여 데이터를 가져온 다음 뷰를 선택하여 사용자에게 표시하는 것뿐입니다. 그 방법은 다음과 같습니다.

이->책- 이것은 우리 모델이자 코드의 일부입니다.

1 $this ->도서->findAllByCategory($category)

선택한 주제에 관한 도서 목록을 반환하도록 모델에 지시합니다(나중에 모델을 살펴보겠습니다).

방법 세트줄:

1 $this ->set("책" , $this ->책->findAllByCategory($category));

컨트롤러는 데이터를 뷰에 전달합니다. 변하기 쉬운 서적모델에서 반환된 데이터를 수락하고 이를 뷰에서 사용할 수 있도록 합니다.

이제 남은 것은 뷰를 표시하는 것뿐입니다. 하지만 이 기능은 기본 뷰를 사용하는 경우 cakePHP에서 자동으로 수행됩니다. 다른 유형을 사용하려면 명시적으로 메소드를 호출해야 합니다. 세우다.

모델

모델은 훨씬 더 간단합니다.

1
클래스 Book은 AppModel을 확장합니다(

}

?>

왜 비어 있나요? 필요한 기능을 제공하는 기본 클래스에서 상속받고 런타임이 다른 모든 작업을 자동으로 처리하도록 하려면 CakePHP의 명명 규칙을 사용해야 하기 때문입니다. 예를 들어, cakePHP는 이름을 기반으로 이 모델이 사용되는 것을 알고 있습니다. BooksController이며 books라는 데이터베이스 테이블에 액세스할 수 있습니다.

이 정의를 통해 우리는 데이터베이스의 데이터를 읽고, 삭제하고, 저장할 수 있는 모델을 갖게 됩니다.

코드를 다음과 같이 저장하세요. book.php폴더에 /앱/모델.

보다

지금 해야 할 일은 작업 목록에 대한 보기(최소 하나)를 만드는 것뿐입니다. 뷰에는 HTML 코드와 모델이 제공하는 책 배열을 반복하는 몇 줄(가능한 한 적은 수)의 PHP 코드가 있습니다.

1














이름 작가 가격

보시다시피, 보기는 전체 페이지를 생성하지 않고 HTML 조각(이 경우 테이블)만 생성합니다. CakePHP는 페이지 템플릿을 정의하는 또 다른 방법을 제공하고 뷰가 해당 템플릿에 삽입되기 때문입니다. 워크벤치는 HTML 페이지의 일부(양식, 링크, Ajax 또는 JavaScript 삽입)를 생성하는 동안 일반적인 작업을 수행하기 위한 몇 가지 도우미 개체도 제공합니다.

보기를 다음으로 저장 목록.ctp(list는 작업 이름이고 ctp는 CakePHP 템플릿을 의미함) /앱/보기/책(컨트롤러 작업에 대한 보기이기 때문입니다.)

이것이 CakePHP 워크벤치를 사용하여 세 가지 구성 요소가 모두 실행되는 방법입니다!

이 기사에서는 MVC의 개념을 이해하고 예제를 사용하여 이를 PHP에 적용하는 방법을 설명합니다.

MVC 개념

MVC(모델-뷰-컨트롤러, " 모델-뷰-행동», « 모델-뷰-컨트롤러")는 제어 로직을 세 개의 개별 구성 요소로 나누어 그 중 하나를 수정해도 다른 구성 요소에 최소한의 영향을 미치는 애플리케이션 디자인 패턴입니다.

MVC 템플릿은 PHP 프로그래머(또는 프로그래머 그룹을 부서로 나누기), 디자이너, 레이아웃 디자이너 등의 작업을 분리해야 하는 복잡한 프로젝트를 만들 때 사용하는 것이 좋습니다.

MVC 패턴은 프레젠테이션, 데이터 및 사용자 상호 작용 처리를 세 가지 개별 구성 요소로 분리합니다.

MVC 모델(모델). 모델은 데이터(일반적으로 뷰에)를 제공하고 상태를 변경하여 요청(일반적으로 컨트롤러의)에도 응답합니다.

MVC 보기(보다). 정보 표시(사용자 인터페이스)를 담당합니다.

MVC 동작(제어 장치). 사용자 입력을 해석하고 그에 따라 응답하도록 모델과 뷰에 알립니다.

MVC 템플릿의 작업 다이어그램을 명확히 하기 위해 아래 그림이 제공됩니다.

프리젠테이션 및 동작과 같은 구성 요소는 모델에 따라 다르지만 어떤 방식으로든 영향을 미치지 않습니다. 모델에는 여러 개의 뷰가 있을 수 있습니다. MVC의 개념은 이해하기 어려울 수 있지만 일단 이해하고 나면 PHP로 애플리케이션을 개발할 때 없어서는 안 될 개념이 됩니다.

PHP의 MVC

PHP에서 MVC를 사용할 때의 특별한 특징은 PHP 애플리케이션에 대한 하나의 진입점이 있다는 것입니다. 예를 들어 다음과 같이 달성됩니다. 모든 요청을 처리할 index.php가 생성됩니다. 이렇게 하려면 인덱스가 있는 폴더에 .htaccess 파일을 생성하고 그 안에 다음 코드를 넣으세요.

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^(.*)$ index.php?route=$1의 RewriteEngine

제공된 코드에서 첫 번째 줄은 요청한 파일이 있는지 확인하고, 존재하지 않으면 index.php로 리디렉션되고, 그렇지 않으면 사이트 이미지에 대한 요청도 색인으로 리디렉션됩니다. 코드의 마지막 줄은 index.php?route=chat/index와 같은 요청을 index.php/chat/index로 변환합니다. 애플리케이션에서 ModRewrite를 사용할 수 없는 경우 리디렉션을 수동으로 수행해야 합니다.

PHP 모델

PHP 모델에 대한 데이터는 해당 속성에 포함되어 있으며 특수 기능을 통해서만 변경할 수 있습니다. 모델에는 여러 뷰가 포함될 수 있습니다. 일반적으로 phpmodel은 데이터베이스, 특히 쓰기, 읽기, 삭제 작업을 수행하는 클래스입니다. 당연히 데이터베이스에서 정보를 읽는 것은 여러 보기(함수)로 구현될 수 있습니다. 예를 들어, 웹사이트의 기사 모델: 데이터베이스에서 특정 기사, 최신 기사, 인기 기사, 일부 카테고리 목록을 얻을 수 있습니다. 이것들은 모두 모델의 표현입니다. 명확성을 위해 PHP 모델의 예가 아래에 제공됩니다.

PHP 컨트롤러(동작)

PHP 컨트롤러는 index.php를 통해 보낸 사용자 요청을 수신하고 이에 따라 모델 작동을 조정합니다. PHP 애플리케이션의 작동을 제어한다고 말하는 것이 더 정확할 것입니다.

PHP 표현

뷰는 모델의 변경 사항을 모니터링하고 PHP 애플리케이션의 인터페이스를 생성하거나 변경합니다.

데이터 목록

이름 ?>

성?>

어떻게 작동하나요?PHPMVC 템플릿?

사용자가 필요한 URL에 접근하면 해당 컨트롤러가 선택되어 뷰와 모델에 접근하고 정보가 표시됩니다. 즉, mvc의 컨트롤러는 모델과 뷰를 연결하는 링크입니다.

PHP 애플리케이션 생성 시 MVC 템플릿의 장점

위에서 언급했듯이 이는 우선 PHP 사이트 개발자를 부서로 차별화하는 것입니다. 대규모 프로젝트를 생성하면 PHP 애플리케이션의 속도도 향상됩니다. 글쎄, PHP 개발자 자신과 직접적인 관련이 있는 것은 PHP 코드의 올바른 구조화입니다(모든 것이 제자리에 있으므로 이해하기 더 쉽습니다).

MVC 예

MVC의 작동 방식에 대한 예제는 이미 있으므로 더 깊이 이해하기 위해 몇 가지 다이어그램을 추가하겠습니다.

MVC 템플릿이 PHP에서 작동하는 방식에 대한 또 다른 체계는 이해하기 쉽습니다.

MVC(Model-View-Controller) 개념은 최근 몇 년 동안 웹 프로그래밍 세계에서 자주 언급되었습니다. 어떤 방식으로든 웹 애플리케이션 개발과 관련된 모든 사람은 어떤 방식으로든 이 약어를 접해본 적이 있을 것입니다. 오늘은 MVC 개념이 무엇인지, 왜 인기를 얻었는지 알아보겠습니다.

고대 역사

MVC는 프로젝트 패턴이 아니라 애플리케이션의 구조를 구축하는 방법, 이 구조에 있는 각 부분의 책임 및 상호 작용을 설명하는 디자인 패턴입니다.

물론 1979년에 다른 환경에 대해 처음 설명되었습니다. 그 당시에는 웹 애플리케이션에 대한 개념이 없었습니다. 팀 버너스 리는 90년대 초반에 월드와이드웹(WWW)의 씨앗을 뿌렸고 세상을 영원히 바꿔 놓았습니다. 오늘 우리가 사용하는 템플릿은 웹 개발을 위해 원본 템플릿을 적용한 것입니다.

웹 애플리케이션에서 이 구조가 큰 인기를 끌었던 이유는 매우 인기를 끌었던 두 가지 개발 환경인 Struts와 Ruby on Rails에 이 구조가 포함되었기 때문입니다. 이 두 가지 개발 환경은 나중에 생성된 수백 개의 개발 환경에 대한 경로를 설정합니다.

웹 애플리케이션용 MVC

MVC 디자인 패턴의 기본 아이디어는 매우 간단합니다. 애플리케이션의 다양한 기능에 대한 책임을 명확하게 분리해야 합니다.

이 애플리케이션은 세 가지 주요 구성요소로 나누어져 있으며, 각 구성요소는 서로 다른 작업을 담당합니다. 예제를 통해 구성요소를 자세히 살펴보겠습니다.

제어 장치

제어 장치사용자 요청을 관리합니다(사용자가 다양한 작업을 수행하기 위해 인터페이스 요소를 클릭할 때 HTTP GET 또는 POST 요청으로 수신됨). 주요 기능은 사용자가 지정한 작업을 수행하는 데 필요한 필수 리소스 및 개체의 작업을 호출하고 조정하는 것입니다. 일반적으로 컨트롤러는 작업에 적합한 모델을 호출하고 적절한 뷰를 선택합니다.

모델

모델- 애플리케이션 관리 개념을 나타내는 데이터 작업에 사용되는 데이터 및 규칙입니다. 모든 애플리케이션에서 전체 구조는 특정 방식으로 처리되는 데이터로 모델링됩니다. 애플리케이션의 사용자란 무엇입니까(메시지 또는 책)? 규칙에 따라 처리해야 하는 데이터만 처리됩니다(날짜는 미래를 가리킬 수 없으며 이메일은 특정 형식이어야 하며 이름은 X 문자를 초과할 수 없음 등).

모델은 사용자가 요청한 데이터(메시지, 책 페이지, 사진 앨범 등)에 대한 표현을 컨트롤러에 제공합니다. 데이터 모델은 사용자에게 어떻게 표시하든 관계없이 동일합니다. 따라서 데이터를 표시하기 위해 사용 가능한 보기를 선택합니다.

모델에는 애플리케이션 논리의 가장 중요한 부분, 즉 우리가 다루고 있는 문제(포럼, 상점, 은행 등)를 해결하는 논리가 포함되어 있습니다. 컨트롤러에는 기본적으로 애플리케이션 자체에 대한 조직적 논리가 포함되어 있습니다(하우스키핑과 유사).

보다

보다모델에서 얻은 데이터를 표현하는 다양한 방법을 제공합니다. 데이터로 채워진 템플릿일 수 있습니다. 여러 가지 유형이 있을 수 있으며 컨트롤러는 현재 상황에 가장 적합한 유형을 선택합니다.

웹 애플리케이션은 일반적으로 컨트롤러, 모델 및 뷰 세트로 구성됩니다. 컨트롤러는 모든 요청을 받고 상황에 따라 다른 컨트롤러를 호출하여 작업을 수행하는 메인 컨트롤러로 설계할 수 있습니다.

예를 살펴 보겠습니다.

온라인 서점을 개발해야 한다고 가정해 보겠습니다. 사용자는 도서 보기, 등록, 구매, 현재 주문에 항목 추가, 도서 생성 또는 삭제(관리자인 경우) 등의 작업을 수행할 수 있습니다. 사용자가 카테고리를 클릭하면 어떤 일이 일어나는지 살펴보겠습니다. 공상우리 가게에서 구입할 수 있는 책의 제목을 보려면

책과 관련된 모든 작업(보기, 편집, 생성 등)을 처리하는 특정 컨트롤러가 있습니다. 그것을 부르자 books_controller.php우리의 예에서는. 또한 다음과 같은 모델이 필요합니다. book_model.php, 스토어 항목과 관련된 데이터 및 로직을 처리합니다. 결론적으로, 데이터를 나타내기 위해서는 도서 목록, 편집 페이지 등과 같은 여러 가지 보기가 필요합니다.

다음 그림은 특정 주제에 대한 도서 목록을 보기 위한 사용자 요청이 처리되는 방식을 보여줍니다. 공상:

컨트롤러(books_controller.php)는 사용자 요청(HTTP GET 또는 POST 요청)을 받습니다. 요청을 수신하고 books_controller.php를 호출하는 index.php와 같은 중앙 컨트롤러를 생성할 수 있습니다.

컨트롤러는 요청과 매개변수를 확인한 후 모델(book_model.php)을 호출합니다. 질문그녀는 그 주제에 관해 읽을 수 있는 책 목록을 가지고 있습니다 공상 .

모델은 데이터베이스(또는 정보를 저장하는 다른 소스)로부터 데이터를 수신하고 필터와 필요한 논리를 적용한 다음 도서 목록을 나타내는 데이터를 반환합니다.

컨트롤러는 적절한 뷰를 사용하여 사용자에게 데이터를 제공합니다. 요청이 휴대폰에서 오는 경우 휴대폰 보기가 사용됩니다. 사용자가 특정 인터페이스 디자인을 사용하면 해당 뷰가 선택되는 식입니다.

장점은 무엇입니까?

MVC 개념을 사용하여 얻을 수 있는 가장 확실한 이점은 프레젠테이션 로직(사용자 인터페이스)과 애플리케이션 로직이 명확하게 분리되어 있다는 것입니다.

다양한 유형의 장치를 사용하는 다양한 유형의 사용자를 지원하는 것은 오늘날 일반적인 과제입니다. 요청이 개인용 컴퓨터에서 오는 경우와 휴대폰에서 오는 경우 제공되는 인터페이스가 달라야 합니다. 모델은 동일한 데이터를 반환하지만 유일한 차이점은 컨트롤러가 데이터를 출력하기 위해 다른 보기를 선택한다는 것입니다.

MVC 개념은 애플리케이션 로직에서 뷰를 분리하는 것 외에도 대규모 애플리케이션의 복잡성을 크게 줄여줍니다. 코드가 훨씬 더 구조화되어 솔루션을 더 쉽게 유지 관리, 테스트 및 재사용할 수 있습니다.

작업 환경을 사용하는 이유는 무엇입니까?

워크벤치를 사용하면 기본 MVC 구조가 이미 준비되어 있으므로 MVC 패턴과 일치하도록 적절한 디렉터리에 파일을 배치하여 구조를 확장하기만 하면 됩니다. 게다가 이미 작성되고 잘 테스트된 기능 세트도 갖게 됩니다.

MVC 워크벤치의 예로 cakePHP를 살펴보겠습니다. 설치 후에는 다음과 같은 세 가지 주요 디렉터리가 생성됩니다.

  • 케이크/
  • 벤더/

폴더 파일이 있는 곳입니다. 이곳은 애플리케이션의 일부를 개발하는 곳입니다.

폴더 내 케이크 cakePHP 파일(워크벤치 기능)이 호스팅됩니다.

폴더 공급 업체타사 PHP 라이브러리를 저장하는 역할을 합니다.

작업 영역(앱 디렉터리)의 구조는 다음과 같습니다.

  • 앱/
    • 구성/
    • 컨트롤러/
    • 장소/
    • 모델/
    • 플러그인/
    • 테스트/
    • 벤더/
    • 견해/
    • 웹루트/

컨트롤러를 디렉터리에 배치해야 합니다. 컨트롤러, 디렉토리의 모델 모델디렉토리에 입력합니다. 견해!

워크벤치를 사용하기 시작하면 생성하거나 수정해야 하는 애플리케이션의 거의 모든 부분이 어디에 있는지 즉시 명확해집니다. 이 조직 자체는 애플리케이션 개발 및 유지 관리 프로세스를 크게 단순화합니다.

예제에서 워크벤치 사용

이 튜토리얼은 cakePHP를 사용하여 애플리케이션을 생성하는 과정을 보여주기 위한 것이 아니기 때문에 MVC 워크벤치 사용의 이점에 대한 설명과 함께 모델, 컨트롤러 및 뷰에 대한 코드만 보여줄 것입니다. 코드는 의도적으로 단순화되어 실제 애플리케이션에서 사용하기에 부적합합니다.

기억하세요, 우리는 서점과 해당 주제에 관한 전체 책 목록을 보고 싶어하는 호기심 많은 사용자를 보고 있었습니다. 공상. 컨트롤러는 사용자의 요청을 수신하고 필요한 조치를 조정했습니다.

따라서 사용자가 버튼을 클릭하자마자 브라우저는 지정된 URL을 요청합니다.

www.ourstore.com/books/list/fantasy

CakePHP는 패턴을 사용하여 URL 형식을 지정합니다. /컨트롤러/액션/param1/param2, 어디 행동컨트롤러에 의해 호출되는 함수입니다. 이전 클래식 형식에서 URL은 다음과 같습니다.

www.ourstore.com/books_controller.php?action=list&category=fantasy

제어 장치

cakePHP 작업 환경에서 컨트롤러는 다음과 같습니다:

BooksController 클래스는 AppController를 확장합니다(

함수 목록($category) (

$this->set("책", $this->Book->findAllByCategory($category));

함수 add() ( ... ... )

함수 삭제() ( ... ... )

... ... } ?>

간단하지 않나요? 이 컨트롤러는 다음과 같이 저장됩니다. books_controller.php그리고 에 게시됨 /앱/컨트롤러. 여기에는 예제에 대한 작업을 수행하는 함수 목록과 책 관련 작업(새 책 추가, 책 삭제 등)을 수행하는 기타 기능 목록이 포함되어 있습니다.

작업 환경에서는 기성 솔루션이 많이 제공되므로 도서 목록만 작성하면 됩니다. 컨트롤러의 기본 기능을 이미 정의한 기본 클래스가 있으므로 이 클래스의 속성과 기능을 상속해야 합니다( 앱컨트롤러상속인입니다 제어 장치).

작업 목록에서 해야 할 일은 모델을 호출하여 데이터를 가져온 다음 뷰를 선택하여 사용자에게 표시하는 것뿐입니다. 그 방법은 다음과 같습니다.

이->책- 이것은 우리 모델이자 코드의 일부입니다.

$this->Book->findAllByCategory($category)

선택한 주제에 관한 도서 목록을 반환하도록 모델에 지시합니다(나중에 모델을 살펴보겠습니다).

방법 세트줄:

$this->set("책", $this->Book->findAllByCategory($category));

컨트롤러는 데이터를 뷰에 전달합니다. 변하기 쉬운 서적모델에서 반환된 데이터를 수락하고 이를 뷰에서 사용할 수 있도록 합니다.

이제 남은 것은 뷰를 표시하는 것뿐입니다. 하지만 이 기능은 기본 뷰를 사용하는 경우 cakePHP에서 자동으로 수행됩니다. 다른 유형을 사용하려면 명시적으로 메소드를 호출해야 합니다. 세우다.

모델

모델은 훨씬 더 간단합니다.

클래스 Book은 AppModel을 확장합니다(

왜 비어 있나요? 필요한 기능을 제공하는 기본 클래스에서 상속받고 런타임이 다른 모든 작업을 자동으로 처리하도록 하려면 CakePHP의 명명 규칙을 사용해야 하기 때문입니다. 예를 들어, cakePHP는 이름을 기반으로 이 모델이 사용되는 것을 알고 있습니다. BooksController이며 books라는 데이터베이스 테이블에 액세스할 수 있습니다.

이 정의를 통해 우리는 데이터베이스의 데이터를 읽고, 삭제하고, 저장할 수 있는 모델을 갖게 됩니다.

코드를 다음과 같이 저장하세요. book.php폴더에 /앱/모델.

보다

지금 해야 할 일은 작업 목록에 대한 보기(최소 하나)를 만드는 것뿐입니다. 뷰에는 HTML 코드와 모델이 제공하는 책 배열을 반복하는 몇 줄(가능한 한 적은 수)의 PHP 코드가 있습니다.












이름 작가 가격

보시다시피, 보기는 전체 페이지를 생성하지 않고 HTML 조각(이 경우 테이블)만 생성합니다. CakePHP는 페이지 템플릿을 정의하는 또 다른 방법을 제공하고 뷰가 해당 템플릿에 삽입되기 때문입니다. 워크벤치는 HTML 페이지의 일부(양식, 링크, Ajax 또는 JavaScript 삽입)를 생성하는 동안 일반적인 작업을 수행하기 위한 몇 가지 도우미 개체도 제공합니다.

보기를 다음으로 저장 목록.ctp(list는 작업 이름이고 ctp는 CakePHP 템플릿을 의미함) /앱/보기/책(컨트롤러 작업에 대한 보기이기 때문입니다.)

이것이 CakePHP 워크벤치를 사용하여 세 가지 구성 요소가 모두 실행되는 방법입니다!

물론 첫째, 이는 모델, 즉 인터넷에서 웹 사이트 및 응용 프로그램을 개발하는 접근 방식이고, 둘째, MVC는 개발 중인 시스템의 효율성을 향상하고 보안을 보장하는 데 사용됩니다. 그리고 해킹에 대한 저항력도 있습니다.

MVC는 다음을 의미합니다. 모델-보다-제어 장치문자 그대로 다음과 같이 번역될 수 있습니다. 모델-뷰-컨트롤러.

개발 모델이 새로운 것처럼 보임에도 불구하고 오랫동안 그 자체로 입증되었으며 다음을 포함한 웹 사이트 개발에 널리 사용됩니다. MVC 개념은 1979년 Trygve Reenskaug에 의해 처음 설명되었습니다.

MVC 개념 또는 그 구성 요소

MVC 모델에는 모델, 뷰 및 컨트롤러의 세 가지 구성 요소가 포함됩니다.

물론 여기서 가장 중요한 것은 모델입니다. 모델은 데이터 처리를 위한 일련의 절차와 알고리즘입니다. 모델 자체에는 데이터가 포함되어 있지 않지만 일반적으로 데이터베이스에서 데이터를 가져와 사전 정의된 알고리즘에 따라 처리합니다. 웹 개발에 관해 이야기하면 모델에는 PHP와 같은 클래스와 함수 세트가 포함됩니다.

두 번째 요소는 뷰입니다. 정보를 표시할 수 있습니다. 웹사이트인 경우 해당 정보가 브라우저에 표시됩니다. 웹 사이트를 개발할 때 뷰에는 모델이 아닌 컨트롤러에서 가져온 변수가 대체되는 HTML 코드가 포함되어 있습니다.

세 번째 요소는 Controller입니다. 주요 기능은 사용자와 모델 간의 의사소통을 제공하는 것입니다. PHP 코드도 포함될 수 있습니다.

많은 초보 개발자가 모델을 사용하지 않거나 데이터베이스에 액세스하는 데만 사용합니다. 이는 중대한 실수이고 부정확하며 MVC 모델의 논리에 위배됩니다. 그리고 모든 주요 코드는 컨트롤러에 배치됩니다. 그 결과 첫째로 거대한 코드가 발생하고 둘째로 애플리케이션 속도가 느려집니다. 글쎄, 그러한 애플리케이션의 코드를 변경하는 것은 훨씬 더 어렵습니다.

예를 들어 뉴스 사이트의 MVC 모델을 생각해 보세요.

사용자가 웹사이트 페이지에 접속합니다. 특정 뉴스 목록이 포함된 기본 페이지가 표시됩니다. 뉴스 생성을 위한 정보는 데이터베이스에서 가져옵니다.

사용자가 브라우저의 주소 표시줄에 특정 페이지를 입력하면 요청이 컨트롤러로 전송되고 이를 처리하고 모델을 로드하는 기능이 실행됩니다.

필요한 데이터를 수신하고 이미 처리하여 객체나 배열로 그룹화한 모델은 데이터베이스에 대한 쿼리를 생성합니다. Model은 데이터를 받아 일정한 형태로 만들어 Controller로 전달한 후 View로 전달합니다. 데이터가 뷰에 직접 전달되면 오류가 발생하지 않습니다. 하지만 불필요한 작업이 사용되어 궁극적으로 사이트와 애플리케이션의 로딩 시간이 길어집니다.

뉴스가 포함된 배열이나 객체를 받은 뷰는 필요한 경우 특정 HTML 코드, CSS를 로드하고 자바스크립트는 이 모든 것을 사용자에게 표시합니다.

이 모델은 많은 제어 시스템과 프레임워크에서 사용되며, 그 중 하나가 최근 새로운 생명을 얻은 CodeIgniter입니다.

따라서 MVC 모델을 사용하면 웹 사이트나 인터넷 애플리케이션을 위한 관리 시스템을 쉽게 만들 수 있습니다. 따라서 CodeIgniter 프레임워크는 정확히 이 모델을 사용합니다.