Heim >Backend-Entwicklung >PHP-Tutorial >Mehrschichtige MVC-Nutzungsanalyse des TP-Frameworks
Dieser Artikel stellt hauptsächlich die Verwendung von thinkphp Multi-Layer-MVC vor und analysiert die spezifischen Prinzipien und zugehörigen Verwendungsfähigkeiten von Multi-Layer-MVC in thinkPHP anhand von Beispielen. Ich hoffe, es hilft allen.
Die Details sind wie folgt:
ThinkPHP unterstützt mehrschichtiges Design.
1. Modellebenenmodell
Verwenden Sie bei Bedarf eine mehrschichtige Verzeichnisstruktur und Namenskonvention, um ein mehrschichtiges Modell zu entwerfen, beispielsweise im Projektdesign Unterscheiden Sie zwischen Datenschicht und Logikschicht. Verschiedene Modellschichten wie Schicht und Dienstschicht können Modell-, Logik- und Dienstverzeichnisse unter dem Modulverzeichnis erstellen und alle Modelloperationen in der Benutzertabelle in drei Schichten unterteilen.
1.Model/UserModel wird verwendet, um datenbezogene automatische Überprüfung, automatische Vervollständigung und Datenzugriffsschnittstellen zu definieren
2.Logic/UserLogical wird verwendet, um benutzerbezogene Geschäftslogik zu definieren
3.Service/UserService wird verwendet, um benutzerbezogene Serviceschnittstellen zu definieren
Diese drei Modelle erben alle die Model-Klasse, beispielsweise die Datenschicht Home/Model/UserModel.class.php
namespace Home\Model; use Think\Model; class UserModel extends Model{}
Logikschicht Home/Logic/UserLogical.class.php
namespace Home\Logic; use Think\Model; class UserLogic extends Model{}
Serviceschicht Home/Service/UserService.class.php
namespace Home\Service; use Think\Model; class UserService extends Model{}
wird aufgerufen Sie können die integrierte D-Methode oder M-Methode verwenden, um
D('User') //实例化UserModel D('User','Logic') //实例化UserLogic D('User','Service') //实例化UserService
aufzurufen, um die unter gespeicherten Daten aufzurufen Die Standardmodellebene Model Es gibt keinen zweiten Parametermodelldateinamen beim Abrufen der Schnittstellenklasse. Die Standardmodellebene kann auch wie folgt geändert werden:
'DEFAULT_M_LAYER' => 'Logic', // Ändern Sie die Standardmodellebene. Wenn der Name Logic
lautet, muss die Instanziierungsmethode entsprechend geändert werden
D('User') //实例化UserLogic D('User','Model') //实例化UserModel D('User','Service') //实例化UserService
Sie können sehen, dass die Verwendung von D('User') standardmäßig die UserLogice-Klasse instanziiert. Dies ist sehr flexibel. Wenn wir Daten überprüfen, erfolgt die automatische Vervollständigung in js und der Datenabruf erfolgt aus die Service-Schnittstelle Ja, auf diese Weise benötigen Sie nur eine Service-Schicht und andere Schichten werden nicht benötigt.
2. Ansichtsebene Ansicht
Eine gängige Vorlage von Drittanbietern ist .tpl. Sie können PHP-Code direkt verwenden Die Vorlage kann einfach durch die Verwendung von Verzeichnissen (Vorlagenthemen) unterschieden werden, zum Beispiel:
View/default/User/add.html View/blue/User/add.html
Komplexere mehrschichtige Ansichten können auch durch verschiedene Ansichtsverzeichnisse unterschieden werden, zum Beispiel:
Gemeinsames Ansichtsebenenverzeichnis anzeigen
Ansichtsebenenverzeichnis für den Zugriff auf Mobiltelefone
Auf diese Weise können verschiedene Vorlagen unterschiedliche Seitenstile verwenden, und das Standardansichtsverzeichnis kann auch wie folgt verwendet werden:
'DEFAULT_V_LAYER' => 'Mobile', // 默认的视图层名称更改为Mobile
3. Controller-LayerController
ThinkPHP-Controller haben zwei Kategorien, eine ist der Kerncontroller und die andere ist der Geschäftscontroller Das ThinkPHP-Verzeichnis, z. B. thinkphpThinkPHPLibraryThinkControllerHproseController .class.php, ist für die Planungssteuerung der Anwendung verantwortlich, einschließlich Abfangen, Weiterleiten, Laden der Konfiguration usw. von HTTP-Anforderungen. Was wir hier besprechen werden, ist der Business Controller, der durch die benutzerdefinierte Controller-Klasse vervollständigt wird. Das Implementierungsprinzip des mehrschichtigen Business Controllers ähnelt der Schichtung des Modells, z. B. Business Controller und Event Controller.
Controller/UserController //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作
namespace Home\Controller; use Think\Controller; class UserController extends Controller{ }
namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ }
'DEFAULT_C_LAYER' => 'Event', // 默认的控制器层名称改为Event
Die Innen- und Außenseite sind isoliert und mehrschichtige Controller sind nicht zwingend erforderlich. Sie können entsprechend den Anforderungen der Anwendung frei geschichtet werden Im Controller können je nach Bedarf auch verschiedene Ebenenmodelle angezeigt werden. Eine Ebenenansicht zur Implementierung verschiedener Themen.
Verwandte Empfehlungen:
Beispiel für die TP5-Auth-Berechtigungsverwaltung
Detaillierte Erläuterung des automatischen Lademechanismus von TP5
Zusammenfassung der TP5-Modellfunktionen
Das obige ist der detaillierte Inhalt vonMehrschichtige MVC-Nutzungsanalyse des TP-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!