ThinkPHP est basé sur le modèle MVC (Model-View-Controller, Model-View-Controller) et prend en charge la conception multicouche (multi-Layer).
Couche modèle
La couche modèle par défaut est composée de la classe Model, mais à mesure que le projet se développe et que le système métier devient plus complexe, une seule couche modèle est très Il est difficile de répondre aux exigences. ThinkPHP prend en charge le modèle multicouche. L'idée de conception est très simple. Différentes couches de modèle héritent toujours de la classe Model du système, mais elles se distinguent par la structure des répertoires et la convention de dénomination.
Recommandations associées : "Tutoriel ThinkPHP"
Par exemple, dans une certaine conception de projet, il est nécessaire de faire la distinction entre les données couche, couche logique et service Pour différentes couches de modèle telles que les couches, nous pouvons créer des répertoires Modèle, Logique et Service sous le répertoire du module et diviser toutes les opérations de modèle sur la table utilisateur en trois couches :
1. Couche : Model/UserModel est utilisée pour définir la vérification automatique liée aux données, l'achèvement automatique et l'interface d'accès aux données
2. Couche logique : Logic/UserLogic est utilisée pour définir la logique métier liée à l'utilisateur
. 3. Couche de service : Service/UserService 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, par exemple :
Couche de données :
Home/Model/UserModel.class.php namespace Home\Model; use Think\Model; class UserModel extends Model{ }
Couche logique :
Home/Logic/UserLogic.class.php namespace Home\Logic; use Think\Model; class UserLogic extends Model{ }
Couche de service : Home/Service/UserService.class.php
namespace Home\Service; use Think\Model; class UserService extends Model{ }
Après avoir ainsi distingué différentes couches de modèle, le fonctionnement des données utilisateur sera très clair. Lors de l'appel, on peut aussi Il est très pratique d'appeler avec la méthode D intégrée :
D(‘User‘) //实例化UserModel D(‘User‘,‘Logic‘) //实例化UserLogic D(‘User‘,‘Service‘) //实例化UserService
Le calque modèle par défaut est Modèle, on peut aussi modifier les paramètres, par exemple :
‘DEFAULT_M_LAYER‘ => ‘Logic‘, // 更改默认的模型层名称为Logic
Après modification, il doit être modifié en : lors de l'instanciation
D(‘User‘) //实例化UserLogic D(‘User‘,‘Model‘) //实例化UserModel D(‘User‘,‘Service‘) //实例化UserService
La division hiérarchique des couches de modèle est très flexible. Les développeurs peuvent librement définir et ajouter des hiérarchies de modèles en fonction des besoins de votre projet. peut également utiliser uniquement le calque Modèle.
Couche de vue
La couche de vue se compose de modèles et le code PHP peut être utilisé directement dans les modèles. Comme décrit plus loin, d'autres moteurs de modèles tiers peuvent également être pris en charge via des pilotes. Les vues multicouches peuvent être simplement distinguées par des répertoires (c'est-à-dire des thèmes de modèles), par exemple :
View/default/User/add.html View/blue/User/add.html
Des vues multicouches plus complexes peuvent être implémentées davantage en utilisant différents répertoires de vues, par exemple :
view 普通视图层目录 mobile 手机端访问视图层目录
L'avantage est que chaque couche de vue différente peut prendre en charge différentes fonctions de thème de modèle.
La couche de vue par défaut est le répertoire View. Nous pouvons ajuster les paramètres comme suit :
‘DEFAULT_V_LAYER‘ => ‘Mobile‘, // 默认的视图层名称更改为Mobile
L'acquisition de modèles pour les répertoires de couches de vue autres que ceux par défaut nécessite l'utilisation de la fonction T, qui sera discuté plus tard.
Couche contrôleur
La couche contrôleur de ThinkPHP se compose d'un contrôleur principal et d'un contrôleur métier. Le contrôleur principal est complété par la classe App responsable du contrôle de planification de. applications (y compris les modules, les contrôleurs et les opérations), y compris l'interception et le transfert de requêtes HTTP, le chargement de la configuration, etc. Le contrôleur métier est complété par une classe de contrôleur définie par l'utilisateur. Le principe de mise en œuvre du contrôleur métier multicouche est similaire à la superposition de modèles, tels que le contrôleur métier et le contrôleur d'événements :
Controller/UserController //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作
Le contrôleur d'accès Home/Controller/UserController.class.php est défini comme suit :
namespace Home\Controller; use Think\Controller; class UserController extends Controller{ }
Event Controller Home/Event/UserEvent.class.php est défini comme suit :
namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ }
UserController est responsable de la réponse d'interaction externe et répond via une requête URL, telle que http:// serverName/User/index, UserEvent est responsable de la réponse aux événements internes et ne peut être appelé qu'en interne :
A(‘User‘,‘Event‘);
La couche de contrôleur d'accès par défaut est Controller Nous pouvons ajuster les paramètres comme suit :
‘DEFAULT_C_LAYER‘ => ‘Event‘, // 默认的控制器层名称改为Event
.
Il est donc isolé du monde extérieur.
La division des contrôleurs multicouches n'est pas obligatoire et peut être superposée librement en fonction des besoins de l'application. Dans la couche contrôleur, vous pouvez appeler le modèle en couches selon vos besoins, ou vous pouvez appeler différentes vues en couches (thèmes).
Dans les trois couches de MVC, ThinkPHP ne dépend pas de M ou de V. Il ne peut même avoir que du C ou uniquement du V. Il s'agit d'une conception d'expérience utilisateur très importante dans la conception de ThinkPHP. la vue. Il peut être automatiquement reconnu même sans C.
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!