Heim > Artikel > PHP-Framework > Wofür steht mvc in thinkphp?
ThinkPHP basiert auf dem MVC-Muster (Model-View-Controller, Model-View-Controller) und unterstützt mehrschichtiges (multi-layer) Design.
Modellebene
Die Standardmodellebene besteht aus der Model-Klasse, aber wenn das Projekt wächst und das Geschäftssystem komplexer wird, ist eine einzelne Modellebene sehr wichtig Es ist schwierig, die Anforderungen zu erfüllen. Die Entwurfsidee ist sehr einfach. Verschiedene Modellschichten erben immer noch von der Modellklasse des Systems, unterscheiden sich jedoch in der Verzeichnisstruktur und der Namenskonvention.
Verwandte Empfehlungen: „ThinkPHP Tutorial“
Zum Beispiel ist es in einem bestimmten Projektdesign notwendig, zwischen Daten zu unterscheiden Schicht, Logikschicht und Dienst Für verschiedene Modellschichten wie Schichten können wir Modell-, Logik- und Dienstverzeichnisse unter dem Modulverzeichnis erstellen und alle Modelloperationen in der Benutzertabelle in drei Schichten unterteilen:
1 Schicht: Model/UserModel wird verwendet, um datenbezogene automatische Überprüfung und automatische Vervollständigung und Datenzugriffsschnittstelle zu definieren
2. Logikschicht: Logik/UserLogic wird verwendet, um benutzerbezogene Geschäftslogik zu definieren
3. Serviceschicht: Service/UserService Zum Definieren benutzerbezogener Serviceschnittstellen usw.
Diese drei Modelloperationsklassen können alle die Modellklasse erben, zum Beispiel:
Datenschicht:
Home/Model/UserModel.class.php namespace Home\Model; use Think\Model; class UserModel extends Model{ }
Logikschicht:
Home/Logic/UserLogic.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{ }
Nach der Unterscheidung verschiedener Modellschichten wird die Funktionsweise von Benutzerdaten sehr klar. Beim Aufruf können wir auch Es ist sehr praktisch, die integrierte D-Methode aufzurufen:
D(‘User‘) //实例化UserModel D(‘User‘,‘Logic‘) //实例化UserLogic D(‘User‘,‘Service‘) //实例化UserService
Die Standardmodellebene ist Modell, wir können auch die Einstellungen ändern, zum Beispiel:
‘DEFAULT_M_LAYER‘ => ‘Logic‘, // 更改默认的模型层名称为Logic
Nach der Änderung muss Folgendes geändert werden:
D(‘User‘) //实例化UserLogic D(‘User‘,‘Model‘) //实例化UserModel D(‘User‘,‘Service‘) //实例化UserService
Die hierarchische Aufteilung der Modellebenen ist sehr flexibel und kann entsprechend den Anforderungen des Projekts frei definiert und hinzugefügt werden Verwenden Sie die Modellebene.
Ansichtsebene
Die Ansichtsebene besteht aus Vorlagen und Vorlagen-Engines, die direkt in Vorlagen verwendet werden können Wie später beschrieben, können auch andere Template-Engines von Drittanbietern über Treiber unterstützt werden. Mehrschichtige Ansichten können einfach durch Verzeichnisse (d. h. Vorlagenthemen) unterschieden werden, zum Beispiel:
View/default/User/add.html View/blue/User/add.html
Komplexere mehrschichtige Ansichten können durch die Verwendung verschiedener Ansichtsverzeichnisse weiter implementiert werden, zum Beispiel:
view 普通视图层目录 mobile 手机端访问视图层目录
Der Vorteil davon ist, dass jede unterschiedliche Ansichtsebene unterschiedliche Funktionen des Vorlagendesigns unterstützen kann.
Die Standardansichtsebene ist das Ansichtsverzeichnis. Wir können die Einstellungen wie folgt anpassen:
‘DEFAULT_V_LAYER‘ => ‘Mobile‘, // 默认的视图层名称更改为Mobile
Die Vorlagenerfassung für nicht standardmäßige Ansichtsebenenverzeichnisse erfordert die Verwendung der T-Funktion später besprochen.
Controller-Schicht
Die Controller-Schicht von ThinkPHP besteht aus einem Kern-Controller und einem Business-Controller. Der Kern-Controller wird durch die App-Klasse innerhalb des Systems vervollständigt Anwendungen (einschließlich Module, Controller und Vorgänge), einschließlich Abfangen und Weiterleiten von HTTP-Anfragen, Laden der Konfiguration usw. Der Business Controller wird durch eine benutzerdefinierte Controller-Klasse vervollständigt. Das Implementierungsprinzip des mehrschichtigen Business Controllers ähnelt der Schichtung von Modellen wie Business Controller und Event Controller:
Controller/UserController //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作
Access Controller Home/Controller/UserController.class.php ist wie folgt definiert:
namespace Home\Controller; use Think\Controller; class UserController extends Controller{ }
Der Event-Controller Home/Event/UserEvent.class.php ist wie folgt definiert:
namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ }
UserController ist für die Reaktion auf externe Interaktionen verantwortlich und antwortet über eine URL-Anfrage, z. B. http:// serverName/Benutzer/index, UserEvent ist für die interne Ereignisantwort verantwortlich und kann nur intern aufgerufen werden:
A(‘User‘,‘Event‘);
Die Standardzugriffscontrollerschicht ist Controller. Wir können die Einstellungen wie folgt anpassen:
‘DEFAULT_C_LAYER‘ => ‘Event‘, // 默认的控制器层名称改为Event
Es ist also von der Außenwelt isoliert.
Die Aufteilung von Multilayer-Controllern ist nicht zwingend erforderlich und kann entsprechend den Anforderungen der Anwendung frei geschichtet werden. In der Controller-Ebene können Sie nach Bedarf das Ebenenmodell aufrufen oder verschiedene Ebenenansichten (Themen) aufrufen.
In den drei Schichten von MVC ist ThinkPHP nicht von M oder V abhängig. Es kann sogar nur C oder nur V haben. Dies ist ein sehr wichtiges User-Experience-Design im ThinkPHP-Design. Der Benutzer muss es nur definieren Die Ansicht kann auch ohne C automatisch erkannt werden.
Das obige ist der detaillierte Inhalt vonWofür steht mvc in thinkphp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!