Maison  >  Article  >  développement back-end  >  Introduction au support MVC multicouche dans les nouvelles fonctionnalités de ThinkPHP3.1

Introduction au support MVC multicouche dans les nouvelles fonctionnalités de ThinkPHP3.1

不言
不言original
2018-07-03 16:23:351657parcourir

Cet article présente principalement la prise en charge du MVC multicouche dans les nouvelles fonctionnalités de ThinkPHP3.1. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Par défaut. La couche modèle est constituée de classes de modèle. Cependant, à mesure que le projet se développe et que le système métier devient plus complexe, il est difficile pour une seule couche de modèle de répondre aux exigences du lancement du modèle multicouche depuis la version 3.1. Cet article présente principalement la prise en charge du MVC multicouche ThinkPHP3.1. Les amis qui en ont besoin peuvent se référer à

1 couche Modèle (Modèle) : La couche modèle par défaut est composée de Modèle. Cependant, à mesure que le projet se développe et que le système métier devient plus complexe, il est difficile pour une seule couche de modèle de répondre aux exigences. À partir de la version 3.1, la prise en charge des modèles multicouches a été lancée. différentes couches de modèle héritent toujours de la classe Model du système, mais des distinctions sont faites dans la structure des répertoires et les conventions de dénomination. Par exemple, dans une certaine conception de projet, il est nécessaire de faire la distinction entre les différentes couches de modèle telles que la couche de données, la couche logique, et la couche de service. Nous pouvons créer un modèle, une logique et un service sous le répertoire Lib du répertoire du projet, toutes les opérations de modèle sur la table utilisateur sont divisées en trois couches :

Couche de données. : Model/UserModel est utilisé pour définir les interfaces de vérification automatique, de complétion automatique et d'accès aux données liées aux données
Couche logique : Logic/UserLogic est utilisé pour définir la logique métier liée à l'utilisateur
Couche de service : Service/UserService est utilisé pour définir les interfaces de service liées à l'utilisateur, etc.

Ces trois classes d'opérations de modèle peuvent toutes hériter de la classe Model, de sorte que le fonctionnement des données utilisateur soit très clair. Lors de l'appel, vous pouvez également utiliser la méthode D intégrée pour appeler facilement :

D('User') //实例化UserModel
D('User','Logic') //实例化UserLogic
D('User','Service') //实例化UserService

La division hiérarchique des couches de modèle est très flexible et les développeurs peut définir librement des hiérarchies en fonction des besoins du projet.

2. Couche de vue : se compose d'un modèle et d'un moteur de modèle qui peut être utilisé directement dans le modèle. La conception du moteur de modèle sera décrite plus tard, et elle peut être utilisée. également être pris en charge via le pilote d'autres moteurs de modèles tiers. Plusieurs couches de vues peuvent être simplement distinguées par des répertoires, par exemple :

Tpl/default/User/add.html
Tpl/blue/User/add.html

3. Couche Contrôleur (Contrôleur) : ThinkPHP La couche contrôleur est composée d'un contrôleur principal et d'un contrôleur métier. Le contrôleur principal est complété par la classe App à l'intérieur du système. Il est responsable du contrôle de la planification des applications (y compris les modules et les opérations), y compris l'interception et le transfert des requêtes HTTP et le chargement de la configuration. , etc., contrôle métier Le gestionnaire est complété par la classe Action définie par l'utilisateur. La version 3.1 a ajouté la prise en charge des contrôleurs de services multicouches. Le principe de mise en œuvre est similaire à la superposition de modèles, tels que les contrôleurs métier et les contrôleurs d'événements :

Action/UserAction //用于用户的业务逻辑控制和调度
Event/UserEvent //用于用户的事件响应操作

UserAction est responsable des réponses d'interaction externe et répond via Les requêtes d'URL, telles que http://serverName/User/index, et UserEvent sont responsables de la réponse aux événements internes et ne peuvent être appelées qu'en interne

 A('User','Event');

, il en est ainsi et isolé de l'extérieur. La division des contrôleurs multicouches n'est pas obligatoire et peut être superposée librement selon les besoins du projet. Dans la couche contrôleur, vous pouvez appeler le modèle en couches selon vos besoins, ou vous pouvez appeler les modèles de vue de différents répertoires.
Dans le même temps, la méthode R peut également prendre en charge l'appel de contrôleurs multicouches. Un troisième paramètre est ajouté pour représenter le nom de couche du contrôleur, par exemple :

R('User/register',array(15),'Event');

signifie appeler la méthode register du contrôleur UserEvent et passer le paramètre 15.

Dans les trois couches de MVC,
ThinkPHP ne dépend pas de M ou de V, et peut même n'avoir que C ou seulement V, Il s'agit d'une conception d'expérience utilisateur très importante dans la conception ThinkPHP Les utilisateurs n'ont qu'à définir la vue, et elle peut être automatiquement reconnue sans C.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Une introduction plus complète aux nouvelles fonctionnalités de ThinkPHP3.1 qui prennent en charge Ajax

À propos de thinkphp pour implémenter le mot de passe recherche d'envoi d'emails Introduction à la fonction de réponse

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:
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