MVC 아키텍처의 의미와 책임 구분을 설명하는 예
저는 최근 Yii Framework의 MVC 프레임워크를 사용하는 프로젝트를 담당했습니다. 처음에는 구조가 매우 견고하다고 생각했습니다.
하지만 비즈니스 로직에 대한 이해가 깊어지면서 문제의 심각성을 깨닫기 시작했습니다.
저는 MVC의 Controller를 오해했고, 과거 경험에 비추어 볼 때 모든 비즈니스 로직이 Controller의 action
에 구현되어 있다고 당연하게 여겼습니다. action
中去实现。
于是,每一个 Controller 的代码都上千行,越来越臃肿。
最后,我下定决心重构代码,起源是一个对外开放 API 接口的需求。
按照现在的架构,代码基本无法复用,我需要把很多功能再重复写一遍,这实在是无法接受。
面向对象编程不仅仅是课本上的名词啊!
真正开始实践才发现,要有面向对象意识,有全局观,是多么难得的一件事情。
1 到底什么是 MVC
模型-视图-控制器(MVC)是一种设计框架(设计模式)。
MVC 的目标是将业务逻辑从用户界面的考虑中分离。
这样,开发者就可以更容易地改变每一部分而不会影响其他。
在 MVC 中,
- Model 代表数据和业务规则;
- View 包含了用户界面元素,例如文本,表单等;
- Controller 则管理模型和视图中的通信。
MVC 在各种编程语言中均有实现,例如 J2EE 应用开发中,
View 可能由 jsp 实现;Controller 是一个 servlet,现在一般用 Struts 实现;Model 则是由一个实体 Bean 来实现。
2 我遇到了什么问题
Yii Framework 是一个流行的 PHP 框架,它借鉴了 Ruby on Rails 的 ActiveRecord
(AR
) 概念。
数据库中的每一个 table
都可以用 AR
类来方便地进行增删改查操作。
它把 AR 当做 Model,并推荐放在一个名为 models
的目录下面。
于是,我在自动生成表对应的 AR 之后,便望文生义想当然地认为已经拥有了 Model 层。
其实,AR只不过是 DAO (数据访问层),并不是 Model 层。
我们的业务几乎全放在了 Controller 里:对用户提交上来的表单进行各种逻辑判断,进行计算,实例化 AR 对数据进行存储……
因为一个 Controller 中会有多个 action
,每个 action
Controller
의 코드에는 수천 줄의 줄이 있으며 점점 더 부풀어 오르고 있습니다. 마침내 코드를 리팩터링하기로 마음먹었습니다. 그 근원은 개방형 API 인터페이스의 필요성이었습니다.현재 아키텍처에 따르면 코드는 기본적으로 재사용이 불가능합니다. 많은 함수를 계속해서 작성해야 하는데 이는 정말 용납할 수 없는 일입니다. 객체 지향 프로그래밍은 단순히 교과서에 나오는 용어가 아닙니다!
실제로 연습을 시작하고 나서야 객체 지향적 인식과 글로벌 관점을 갖는 것이 얼마나 드문 일인지 깨달았습니다. 1 MVC
Model-View-Controller(MVC)란 정확히 무엇인가요?
디자인 프레임워크(디자인 패턴)입니다.
MVC의
목표는
사용자 인터페이스 고려 사항에서 비즈니스 로직 을 분리하는 것입니다. 이렇게 하면 개발자는 다른 부분에 영향을 주지 않고 각 부분을 더 쉽게 변경할 수 있습니다.
MVC에서
데이터 및 비즈니스 규칙을 나타냅니다.
통신을 관리합니다.
View는 jsp로 구현될 수 있습니다. 현재 일반적으로 Struts 모델로 구현됩니다. 달성할 Entity Bean. 2 어떤 문제가 발생했나요?
Yii Framework는 Ruby on Rails의ActiveRecord
(AR code>)를 기반으로 하는 인기 있는 PHP 프레임워크입니다. ) 개념. 🎜🎜데이터베이스의 모든 <code>테이블
은 AR
클래스를 사용하여 추가, 삭제, 수정 및 쿼리 작업을 쉽게 수행할 수 있습니다. 🎜🎜AR을 모델로 취급하며 models
라는 디렉터리에 배치하는 것을 권장합니다. 🎜🎜그래서 테이블에 해당하는 AR을 자동으로 생성한 후에는 이미 모델 레이어가 있다고 당연하게 여겼습니다. 🎜🎜사실 🎜🎜AR은 모델 레이어🎜🎜가 아닌 DAO(데이터 액세스 레이어)일 뿐입니다. 🎜🎜우리의 거의 모든 업무는 컨트롤러에 위치합니다: 사용자가 제출한 양식에 대해 다양한 논리적 판단을 내리고, 계산을 수행하고, AR을 인스턴스화하여 데이터를 저장합니다...🎜 🎜🎜컨트롤러에는 여러 개의 action
이 있기 때문에 각 action
에는 이러한 비즈니스 처리가 있습니다. 🎜🎜드디어 컨트롤러 코드가 1000줄을 초과한 것을 발견했습니다. 🎜🎜갑자기 리더는 기존의 기존 시스템이 타사 인터페이스를 호출하고 제공할 수 있도록 API를 개방해야 한다고 말했습니다. 🎜🎜제3자는 매개변수만 제공하면 되며, 이 시스템은 결과 값만 제공하므로 비즈니스 처리에는 관심이 없습니다. 🎜🎜나쁜 점은 컨트롤러가 이미 해당 서비스를 구현했지만 양식 제출을 허용한다는 것입니다. 어떻게 SOAP xml 문서도 허용할 수 있습니까? 🎜🎜🎜🎜컨트롤러는 콘돔과 마찬가지로 최대한 얇아야 합니다. 🎜🎜🎜🎜책임은 🎜🎜사용자 입력을 수락한 다음 처리를 위해 즉시 다른 클래스에 전달해야 합니다🎜🎜. 🎜🎜이런 식으로 Controller는 서로 다른 인터페이스를 제공하는 역할만 담당하므로 비즈니스 로직을 분리할 수 있고 분리된 비즈니스를 쉽게 재사용할 수 있습니다. 🎜🎜이 분리된 사업 부분은 누가 처리하나요? 대답은 🎜Model🎜이어야 합니다. 🎜🎜🎜3 View🎜🎜🎜🎜View🎜의 책임은 상대적으로 명확하며 디스플레이를 담당합니다. 🎜🎜🎜🎜디스플레이 인터페이스와 관련이 없는 모든 항목은 뷰에 표시되어서는 안 됩니다. 🎜🎜🎜🎜따라서 일반적으로 🎜🎜 🎜View 🎜에는 복잡한 판단문이나 복잡한 계산 과정이 없어야 합니다. 🎜🎜🎜🎜간단한 루프 문과 서식 지정 문을 사용할 수 있습니다. 예를 들어, 블로그 홈페이지의 텍스트 목록은 일종의 루프입니다. 🎜🎜PHP 웹 애플리케이션의 경우 🎜🎜HTML이 View🎜🎜의 주요 콘텐츠입니다. 🎜🎜View🎜🎜는 Model🎜🎜의 쓰기 메소드를 호출하면 안 됩니다. 🎜즉, View는 Model에서 데이터를 읽기만 하고 Model을 다시 작성하지는 않습니다.
그래서 뷰와 모델은 분리될 수 없다고 말합니다.
또한 $_GET
및 $_POST
는 View에서 직접 액세스할 수 없으며 컨트롤러를 통해 View에 전달해야 합니다. $_GET
和$_POST
,应该由Controller传递给View。
此外,View一般没有任何准备数据处理的内容,如查询数据库等。
这些一般是放在Controller里面,并以变量的形式传给视图。
也就是说,视图里面要用到的数据,就是一个变量。
4 Model的职责
对于Model而言,最主要就是保存和输出信息。
比如,Post类必然有一个用于保存博客文章标题的title
属性,必然有一个删除的操作,这都是Model的内容。
数据、行为、方法是Model的主要内容。
实际工作中,Model是MVC中代码量最大。
Model是逻辑最复杂的地方,因为应用的业务逻辑也要在这里表示。
注意将Model与Controller区分开。
Model是处理业务方面的逻辑,Controller只是简单的协调Model和View之间的关系。
只要是与业务有关的,就该放在Model里面。
数据校验、public常量和变量,都应该放在model层,
也就是说,有可能被重复使用的属性或方法,都应该放在model层,一次定义,到处使用。
Model不应该访问request、session以及其他环境数据,这些应该由Controller注入。
好的设计,应该是胖Model,瘦Controller。
5 Controller的职责
对于Controller,主要是响应用户请求,决定使用什么视图,需要准备什么数据用来显示。
因此,对于request
的访问代码,应该放在Controller里面,比如$_GET
、$_POST
View에는 일반적으로 데이터베이스 쿼리 등 데이터 처리를 준비하는 콘텐츠가 없습니다.
이것들은 일반적으로 컨트롤러에 배치되고 변수 형태로 뷰에 전달됩니다. 즉, 뷰에 사용되는 데이터는 변수입니다. 4가지 모델의 책임
모델에게 가장 중요한
은 정보를 저장하고 출력하는 일입니다.예를 들어 Post 클래스에는 블로그 게시물의 제목을 저장하는 데 사용되는
title
속성이 있어야 하며, 삭제 작업이 있어야 합니다. 이는 모델의 모든 내용입니다.
데이터, 동작, 메소드는 Model
의 주요 콘텐츠입니다. 실제 작업에서는Controller의 5가지 책임🎜🎜🎜 🎜Controller🎜에서는 주로 🎜🎜사용자 요청에 응답하고, 사용할 뷰를 결정하고, 표시를 위해 어떤 데이터를 준비해야 하는지 결정합니다🎜🎜 . 🎜🎜따라서 🎜🎜요청
에 대한 액세스 코드는 $_GET
, $_POST
등과 같이 Controller🎜🎜에 배치되어야 합니다. . 🎜🎜컨트롤러는 사용자 요청 데이터를 얻는 것으로 제한되어야 하며 🎜🎜데이터에 대한 작업이나 전처리를 수행해서는 안 되며🎜🎜 이는 모델 내부에 배치되어야 합니다. 🎜🎜데이터 쓰기 작업을 완료하려면 Model 클래스의 메서드를 호출해야 합니다. 🎜🎜사용자 요청에 따라 뷰 렌더링이 호출됩니다. 🎜🎜또한 일반적으로 🎜🎜 HTML 코드 및 기타 프레젠테이션 레이어 항목이 없어야 하며 🎜🎜 이는 뷰의 콘텐츠여야 합니다. 🎜🎜🎜6 Enlightenment🎜🎜🎜Yii Framework의 공식 문서에는 다음 단락이 있습니다. 🎜🎜🎜잘 설계된 MVC 애플리케이션에서 컨트롤러는 종종 매우 얇아서 모델은 수십 줄만 포함합니다. 🎜🎜🎜간단히 말하면 🎜Rich Model이 더 좋습니다🎜. 🎜🎜🎜🎜
위 내용은 MVC 아키텍처의 의미와 책임 구분을 설명하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP는 MVC 아키텍처를 구현합니다: 기본 원리 및 애플리케이션 MVC(Model-View-Controller)는 애플리케이션을 세 가지 핵심 구성 요소(모델, 뷰, 컨트롤러)로 나누는 방법입니다. 이 패턴의 주요 목적은 코드를 독립적인 빌딩 블록으로 분리하여 개발의 유지 관리성, 확장성 및 재사용성을 향상시키는 것입니다. 웹 개발에서 MVC는 가장 인기 있는 디자인 패턴 중 하나가 되었습니다. PHP는 웹 개발에 널리 사용되는 언어 중 하나입니다.

PHP8 프레임워크를 통해 보안 MVC 아키텍처를 구현하는 방법 인터넷의 급속한 발전으로 인해 웹 애플리케이션은 우리 삶에서 점점 더 중요한 역할을 하고 있습니다. 그러나 웹 애플리케이션의 복잡성이 증가함에 따라 보안 문제는 무시할 수 없는 중요한 문제가 되었습니다. 애플리케이션과 사용자의 데이터 보안을 보호하려면 애플리케이션의 보안을 보장하는 적절한 아키텍처와 기술적 수단을 채택해야 합니다. PHP 개발에서는 MVC 아키텍처를 채택하는 것이 일반적인 관행입니다. PHP8 프레임워크에서는 다음을 사용할 수 있습니다.

PHP8 프레임워크에서 효과적인 MVC 아키텍처를 구축하는 방법 MVC(Model-View-Controller)는 애플리케이션에 효과적인 조직 구조를 제공하는 데 사용되는 일반적인 소프트웨어 디자인 패턴입니다. PHP 개발에서 MVC 패턴은 개발자가 코드 유지 관리성과 확장성을 향상시키는 중요한 도구입니다. 이 기사에서는 PHP8 프레임워크에서 효과적인 MVC 아키텍처를 구축하는 방법을 소개합니다. 1. 프레임워크 선택 적절한 프레임워크를 선택하는 것은 MVC 아키텍처 구축의 첫 번째 단계입니다. PHP8에는 현재 많은

웹 개발에서 MVC 아키텍처 패턴은 웹 애플리케이션 개발에 자주 사용됩니다. PHP 개발에서는 MVC 아키텍처가 널리 사용되어 웹 애플리케이션 개발을 위한 효과적인 솔루션을 제공합니다. 이 기사에서는 PHP의 MVC 아키텍처 구현과 자주 묻는 질문에 대한 답변을 소개합니다. 1. MVC 아키텍처 패턴 소개 MVC는 소프트웨어 개발을 위한 아키텍처 패턴으로 크게 모델, 뷰, 컨트롤러의 세 가지 구성요소로 구성됩니다.

MVC 아키텍처 분석 - 웹 애플리케이션의 기본 원리 이해 MVC(Model-View-Controller) 아키텍처는 웹 애플리케이션을 구축하는 데 일반적으로 사용되는 소프트웨어 디자인 패턴입니다. 이는 애플리케이션을 모델, 뷰 및 컨트롤러의 세 가지 기본 구성 요소로 나눕니다. 각 부분은 서로 다른 기능을 담당하며 함께 작동하여 애플리케이션을 보다 명확하고 유지 관리 및 확장 가능하게 만듭니다. 모델 모델은 애플리케이션입니다.

YII 프레임 워크는 MVC 아키텍처를 채택하고 구성 요소, 모듈 등을 통해 유연성과 확장 성을 향상시킵니다. 1) MVC 모드는 응용 프로그램 로직을 모델,보기 및 컨트롤러로 나눕니다. 2) YII의 MVC 구현은 조치 정제 요청 처리를 사용합니다. 3) YII는 모듈 식 개발을 지원하고 코드 조직 및 관리를 향상시킵니다. 4) 캐시 및 데이터베이스 쿼리 최적화를 사용하여 성능을 향상시킵니다.

최신 웹 개발에서 MVC 프레임워크를 사용하면 개발 효율성과 코드 유지 관리성이 크게 향상될 수 있습니다. CakePHP는 MVC 디자인 패턴을 기반으로 한 PHP 프레임워크로, 사용 편의성과 유연성으로 인해 많은 개발자들에게 사랑을 받고 있습니다. 이 기사에서는 CakePHP 프레임워크를 사용하여 웹 애플리케이션을 개발하는 방법을 소개합니다. 준비 작업 CakePHP를 사용하기 전에 다음 소프트웨어를 설치해야 합니다. PHP5.6 이상 MySQL5.5 이상 Apache 서버

PHP8 프레임워크에서 확장 가능하고 유지 관리 가능한 MVC 아키텍처를 구현하는 방법 소개: 웹 애플리케이션의 지속적인 개발로 인해 MVC(Model-View-Controller) 아키텍처는 널리 채택되는 디자인 패턴이 되었습니다. 이는 개발자가 애플리케이션 논리, 보기 및 데이터를 분리하여 코드 확장성과 유지 관리성을 향상시키는 데 도움이 될 수 있습니다. 이 기사에서는 PHP8 프레임워크에서 확장 가능하고 유지 관리 가능한 MVC 아키텍처를 구현하는 방법을 소개합니다. 1. MVC 아키텍처를 이해합니다. MVC 아키텍처는 세 가지 주요 구성 요소로 구성됩니다. 모델(M)
