Table des matières
1 到底什么是 MVC" >1 到底什么是 MVC
2 我遇到了什么问题" >2 我遇到了什么问题
de " >objectif de
4 Model的职责" >4 Model的职责
5 Controller的职责" >5 Controller的职责
4 Responsabilités du modèle" >4 Responsabilités du modèle
5 Responsabilités du contrôleur🎜🎜🎜Pour le 🎜Controller🎜, il 🎜🎜répond principalement aux demandes des utilisateurs, décide quelle vue utiliser et quelles données doivent être préparées pour l'affichage🎜🎜 . 🎜🎜Par conséquent, 🎜🎜Le code d'accès pour request doit être placé dans le contrôleur🎜🎜, tel que $_GET, $_POST, etc. . 🎜🎜Le contrôleur doit se limiter à l'obtention des données de demande de l'utilisateur, 🎜🎜ne doit effectuer aucune opération ni prétraitement sur les données🎜🎜, celles-ci doivent être placées à l'intérieur du modèle. 🎜🎜Pour les opérations d'écriture de données, il est nécessaire d'appeler la méthode de la classe Model pour terminer. 🎜🎜En réponse aux demandes des utilisateurs, le rendu de la vue est appelé. 🎜🎜De plus, généralement 🎜🎜 ne devrait pas avoir de code HTML ou d'autres éléments de la couche de présentation 🎜🎜, cela devrait être le contenu appartenant à la vue. 🎜🎜🎜6 Lumières🎜🎜🎜Il y a ce paragraphe dans la documentation officielle de Yii Framework : 🎜🎜🎜Dans une application MVC bien conçue, les contrôleurs sont souvent très fins, ne contenant probablement que quelques dizaines de lignes de code alors que les modèles le sont ; très gros, contenant la majeure partie du code chargé de représenter et de manipuler les données 🎜🎜🎜En bref, 🎜Rich Model is Better🎜. 🎜🎜🎜🎜" >5 Responsabilités du contrôleur🎜🎜🎜Pour le 🎜Controller🎜, il 🎜🎜répond principalement aux demandes des utilisateurs, décide quelle vue utiliser et quelles données doivent être préparées pour l'affichage🎜🎜 . 🎜🎜Par conséquent, 🎜🎜Le code d'accès pour request doit être placé dans le contrôleur🎜🎜, tel que $_GET, $_POST, etc. . 🎜🎜Le contrôleur doit se limiter à l'obtention des données de demande de l'utilisateur, 🎜🎜ne doit effectuer aucune opération ni prétraitement sur les données🎜🎜, celles-ci doivent être placées à l'intérieur du modèle. 🎜🎜Pour les opérations d'écriture de données, il est nécessaire d'appeler la méthode de la classe Model pour terminer. 🎜🎜En réponse aux demandes des utilisateurs, le rendu de la vue est appelé. 🎜🎜De plus, généralement 🎜🎜 ne devrait pas avoir de code HTML ou d'autres éléments de la couche de présentation 🎜🎜, cela devrait être le contenu appartenant à la vue. 🎜🎜🎜6 Lumières🎜🎜🎜Il y a ce paragraphe dans la documentation officielle de Yii Framework : 🎜🎜🎜Dans une application MVC bien conçue, les contrôleurs sont souvent très fins, ne contenant probablement que quelques dizaines de lignes de code alors que les modèles le sont ; très gros, contenant la majeure partie du code chargé de représenter et de manipuler les données 🎜🎜🎜En bref, 🎜Rich Model is Better🎜. 🎜🎜🎜🎜
Maison développement back-end tutoriel php Exemples pour expliquer le sens et la répartition des responsabilités de l'architecture MVC

Exemples pour expliquer le sens et la répartition des responsabilités de l'architecture MVC

Jan 07, 2022 pm 02:09 PM
mvc架构

J'étais récemment responsable d'un projet utilisant le framework MVC de Yii Framework. Au début, je pensais que la structure était très robuste.

Mais à mesure que j'approfondissais ma compréhension de la logique métier, j'ai commencé à réaliser la gravité du problème.

J'ai mal compris Controller dans MVC, et sur la base de mon expérience passée, j'ai pris pour acquis que toute la logique métier était implémentée dans l'action de Controller. action 中去实现。

于是,每一个 Controller代码都上千行,越来越臃肿

最后,我下定决心重构代码,起源是一个对外开放 API 接口的需求。

按照现在的架构,代码基本无法复用,我需要把很多功能再重复写一遍,这实在是无法接受。

面向对象编程不仅仅是课本上的名词啊!

真正开始实践才发现,要有面向对象意识,有全局观,是多么难得的一件事情。

Exemples pour expliquer le sens et la répartition des responsabilités de larchitecture MVC

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

Ainsi, le

code de chaque

Controller

comporte des milliers de lignes, ce qui devient de plus en plus volumineux

.

Finalement, j'ai décidé de refactoriser le code. L'origine était le besoin d'une interface API ouverte.

Selon l'architecture actuelle, le code est fondamentalement impossible à réutiliser. Je dois écrire de nombreuses fonctions encore et encore, ce qui est vraiment inacceptable. La programmation orientée objet n'est pas qu'un terme utilisé dans les manuels scolaires !

Ce n'est que lorsque j'ai vraiment commencé à pratiquer que j'ai réalisé à quel point il est rare d'avoir une conscience orientée objet et une perspective globale.

Exemples pour expliquer le sens et la répartition des responsabilités de larchitecture MVC 1 Qu'est-ce que MVC

Model-View-Controller (MVC) est un

cadre de conception (modèle de conception). L'

objectif de

MVC est de séparer la logique métier des considérations liées à l'interface utilisateur

. De cette façon, les développeurs peuvent plus facilement modifier chaque partie sans affecter les autres. Dans MVC,

  • Le modèle représente

    les données et les règles métier

  • La vue contient les éléments de l'interface utilisateur, tels que le texte, les formulaires, etc. /li>
  • View li>
  • Controller gère la

    communication

    entre le modèle et la vue.

MVC est implémenté dans divers langages de programmation. Par exemple, dans le développement d'applications J2EE, View peut être implémenté par jsp ; Controller est un servlet, désormais généralement implémenté avec Struts ; Entity Bean à réaliser.

2 Quel problème ai-je rencontré ? Yii Framework est un framework PHP populaire qui s'appuie sur ActiveRecord(AR code> de Ruby on Rails. ) concept.

Chaque table de la base de données peut utiliser la classe AR pour effectuer facilement des opérations d'ajout, de suppression, de modification et de requête. 🎜🎜Il traite AR comme un modèle et recommande de le placer dans un répertoire appelé models. 🎜🎜Donc, après avoir généré automatiquement l'AR correspondant au tableau, j'ai pris pour acquis que j'avais déjà le calque Modèle. 🎜🎜En fait, 🎜🎜AR n'est qu'un DAO (couche d'accès aux données), pas une couche modèle🎜🎜. 🎜🎜Presque toutes nos activités sont placées dans le contrôleur : effectue divers jugements logiques sur les formulaires soumis par les utilisateurs, effectue des calculs et instancie AR pour stocker les données...🎜 🎜🎜Comme il y aura plusieurs actions dans un contrôleur, chaque action a un tel traitement métier. 🎜🎜Finalement, j'ai constaté que mon code contrôleur dépassait 1000 lignes. 🎜🎜Soudain, un jour, le leader a déclaré que notre système devrait ouvrir des API pour que les anciens systèmes existants puissent appeler et fournir des interfaces tierces. 🎜🎜Le tiers n'a qu'à donner un paramètre, et ce système ne donne qu'une valeur de résultat. Il ne se soucie pas du traitement commercial. 🎜🎜Le problème est que le contrôleur a déjà implémenté ces services, mais il accepte les soumissions de formulaires. Comment peut-il également accepter les documents XML SOAP ? 🎜🎜🎜🎜Le contrôleur, comme les préservatifs, doit être aussi fin que possible. 🎜🎜🎜🎜Sa responsabilité devrait 🎜🎜 simplement accepter les entrées de l'utilisateur, puis les transmettre immédiatement à d'autres classes pour traitement 🎜🎜. 🎜🎜De cette façon, le contrôleur est uniquement responsable de fournir différentes interfaces, afin que nous puissions séparer la logique métier et que les activités séparées puissent être facilement réutilisées. 🎜🎜Qui gérera cette partie séparée de l’entreprise ? La réponse devrait être 🎜Modèle🎜. 🎜🎜🎜3 La responsabilité de View🎜🎜🎜🎜View🎜 est relativement claire, elle est responsable de l'affichage. 🎜🎜🎜🎜Tout ce qui n'a rien à voir avec l'interface d'affichage ne doit pas apparaître dans la vue. 🎜🎜🎜🎜Par conséquent, généralement 🎜🎜 ne devrait pas avoir de déclarations de jugement complexes ou de processus de calcul complexes dans 🎜View 🎜. 🎜🎜🎜🎜Vous pouvez avoir des instructions de boucle simples et des instructions de formatage. Par exemple, la liste de textes sur la page d’accueil du blog est une sorte de boucle. 🎜🎜Pour les applications Web PHP, 🎜🎜HTML est le contenu principal de View🎜🎜. 🎜🎜View🎜🎜 ne devrait jamais appeler la méthode d'écriture du modèle🎜🎜. 🎜

En d’autres termes, View lit uniquement les données du modèle mais ne réécrit pas le modèle.

Nous disons donc que Vue et Modèle sont indissociables.

De plus, $_GET et $_POST ne sont pas directement accessibles dans View et doivent être transmis à View par le contrôleur. $_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

De plus,

View n'a généralement aucun contenu pour préparer le traitement des données, comme l'interrogation de la base de données, etc.

Ceux-ci sont généralement placés dans le contrôleur et transmis à la vue sous forme de variables.

En d'autres termes, la donnée à utiliser dans la

vue est une variable

.

4 Responsabilités du modèle

Pour

Model,

la chose la plus importante est de sauvegarder et de sortir les informations

.

Par exemple, la classe Post doit avoir un attribut title utilisé pour enregistrer le titre de l'article de blog, et il doit y avoir une opération de suppression. Ce sont tous les contenus du modèle.

Les données, le comportement et les méthodes constituent le contenu principal de Model

.
Dans le travail réel,
🎜Model possède la plus grande quantité de code dans MVC🎜🎜. 🎜🎜Le modèle est la partie la plus complexe de la logique, car la logique métier de l'application doit également être exprimée ici. 🎜🎜Faites attention à distinguer le modèle du contrôleur. 🎜🎜🎜🎜Model gère la logique métier et Controller coordonne simplement la relation entre le modèle et la vue. 🎜🎜🎜🎜Tant qu'il est lié à l'entreprise, il doit être placé dans le Modèle. 🎜🎜🎜🎜La vérification des données🎜🎜, les constantes et variables publiques🎜🎜🎜🎜 doivent toutes être placées dans la couche modèle, 🎜🎜En d'autres termes, les attributs ou méthodes pouvant être réutilisés doivent être placés dans la couche modèle, une fois définis, utilisé partout. 🎜🎜Le modèle ne doit pas accéder aux données de demande, de session et autres données d'environnement, celles-ci doivent être injectées par le contrôleur. 🎜🎜Un bon design doit être 🎜🎜Fat Model et Thin Controller🎜🎜. 🎜

5 Responsabilités du contrôleur🎜🎜🎜Pour le 🎜Controller🎜, il 🎜🎜répond principalement aux demandes des utilisateurs, décide quelle vue utiliser et quelles données doivent être préparées pour l'affichage🎜🎜 . 🎜🎜Par conséquent, 🎜🎜Le code d'accès pour request doit être placé dans le contrôleur🎜🎜, tel que $_GET, $_POST, etc. . 🎜🎜Le contrôleur doit se limiter à l'obtention des données de demande de l'utilisateur, 🎜🎜ne doit effectuer aucune opération ni prétraitement sur les données🎜🎜, celles-ci doivent être placées à l'intérieur du modèle. 🎜🎜Pour les opérations d'écriture de données, il est nécessaire d'appeler la méthode de la classe Model pour terminer. 🎜🎜En réponse aux demandes des utilisateurs, le rendu de la vue est appelé. 🎜🎜De plus, généralement 🎜🎜 ne devrait pas avoir de code HTML ou d'autres éléments de la couche de présentation 🎜🎜, cela devrait être le contenu appartenant à la vue. 🎜🎜🎜6 Lumières🎜🎜🎜Il y a ce paragraphe dans la documentation officielle de Yii Framework : 🎜🎜🎜Dans une application MVC bien conçue, les contrôleurs sont souvent très fins, ne contenant probablement que quelques dizaines de lignes de code alors que les modèles le sont ; très gros, contenant la majeure partie du code chargé de représenter et de manipuler les données 🎜🎜🎜En bref, 🎜Rich Model is Better🎜. 🎜🎜🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP implémente l'architecture MVC : principes de base et applications PHP implémente l'architecture MVC : principes de base et applications Jun 18, 2023 pm 01:13 PM

PHP implémente l'architecture MVC : principes de base et applications MVC (Model-View-Controller) est un modèle de conception logiciel courant. C'est une façon de diviser une application en trois composants principaux (modèle, vue, contrôleur). L'objectif principal de ce modèle est de séparer le code en éléments de base indépendants pour améliorer la maintenabilité, l'évolutivité et la réutilisation du développement. Dans le développement Web, MVC est devenu l’un des modèles de conception les plus populaires. PHP est l'un des langages les plus populaires pour le développement Web.

Comment implémenter une architecture MVC sécurisée via le framework PHP8 Comment implémenter une architecture MVC sécurisée via le framework PHP8 Sep 11, 2023 am 08:21 AM

Comment implémenter une architecture MVC sécurisée via le framework PHP8 Avec le développement rapide d'Internet, les applications Web jouent un rôle de plus en plus important dans nos vies. Cependant, à mesure que la complexité des applications Web augmente, les problèmes de sécurité sont devenus un problème critique qui ne peut être ignoré. Afin de protéger la sécurité des données des applications et des utilisateurs, nous devons adopter une architecture et des moyens techniques appropriés pour assurer la sécurité des applications. Dans le développement PHP, l'adoption de l'architecture MVC est une pratique courante. Dans le framework PHP8, on peut utiliser

Comment construire une architecture MVC efficace dans le framework PHP8 Comment construire une architecture MVC efficace dans le framework PHP8 Sep 12, 2023 pm 03:18 PM

Comment créer une architecture MVC efficace dans le framework PHP8 MVC (Model-View-Controller) est un modèle de conception logicielle courant utilisé pour fournir une structure organisationnelle efficace pour les applications. Dans le développement PHP, le modèle MVC est un outil important permettant aux développeurs d'améliorer la maintenabilité et l'évolutivité du code. Cet article explique comment créer une architecture MVC efficace dans le framework PHP8. 1. Sélection du framework Le choix d'un framework approprié est la première étape dans la construction d'une architecture MVC. PHP8 possède actuellement de nombreux

Implémentation de l'architecture MVC en PHP et réponses aux questions fréquemment posées Implémentation de l'architecture MVC en PHP et réponses aux questions fréquemment posées Jun 08, 2023 pm 02:19 PM

Dans le développement Web, le modèle d'architecture MVC est souvent utilisé dans le développement d'applications Web. Dans le développement PHP, l'architecture MVC a été largement utilisée, offrant une solution efficace pour le développement d'applications Web. Cet article présentera l'implémentation de l'architecture MVC en PHP et ses réponses aux questions fréquemment posées. 1. Introduction au modèle architectural MVC MVC est un modèle architectural pour le développement de logiciels. Il se compose principalement de trois composants : modèle, vue et contrôleur.

Analyse de l'architecture MVC – comprendre les principes de base des applications Web Analyse de l'architecture MVC – comprendre les principes de base des applications Web Sep 08, 2023 am 10:48 AM

Analyse de l'architecture MVC - comprendre les principes de base des applications Web L'architecture MVC (Model-View-Controller) est un modèle de conception logicielle couramment utilisé pour créer des applications Web. Il divise l'application en trois composants de base : Modèle, Vue et Contrôleur. Chaque partie est responsable de différentes fonctions et travaille ensemble pour rendre l'application plus claire, maintenable et évolutive. Modèle Un modèle est une application

Comment utiliser le framework CakePHP en php ? Comment utiliser le framework CakePHP en php ? May 31, 2023 pm 02:51 PM

Dans le développement Web moderne, l'utilisation du framework MVC peut considérablement améliorer l'efficacité du développement et la maintenabilité du code. CakePHP est un framework PHP basé sur le modèle de conception MVC. Sa facilité d'utilisation et sa flexibilité le rendent apprécié par de nombreux développeurs. Dans cet article, nous présenterons comment utiliser le framework CakePHP pour développer des applications Web. Travail de préparation Avant d'utiliser CakePHP, vous devez installer le logiciel suivant : PHP5.6 ou version supérieure MySQL5.5 ou version supérieure Serveur Apache

Comment implémenter une architecture MVC évolutive et maintenable dans le framework PHP8 Comment implémenter une architecture MVC évolutive et maintenable dans le framework PHP8 Sep 11, 2023 am 08:49 AM

Comment implémenter une architecture MVC évolutive et maintenable dans le framework PHP8 Introduction : Avec le développement continu des applications Web, l'architecture MVC (Model-View-Controller) est devenue un modèle de conception largement adopté. Il peut aider les développeurs à séparer la logique des applications, les vues et les données, améliorant ainsi l'évolutivité et la maintenabilité du code. Dans cet article, nous présenterons comment implémenter une architecture MVC extensible et maintenable dans le framework PHP8. 1. Comprendre l'architecture MVC L'architecture MVC se compose de trois composants principaux : Modèle (M).

Architecture de Yii: MVC et plus Architecture de Yii: MVC et plus Apr 11, 2025 pm 02:41 PM

YII Framework adopte une architecture MVC et améliore sa flexibilité et son évolutivité via des composants, des modules, etc. 1) Le mode MVC divise la logique d'application en modèle, vue et contrôleur. 2) L'implémentation MVC de YII utilise le traitement de la demande de raffinement d'action. 3) YII prend en charge le développement modulaire et améliore l'organisation et la gestion du code. 4) Utilisez l'optimisation des requêtes de cache et de base de données pour améliorer les performances.

See all articles