Dieser Artikel stellt hauptsächlich die Gesamtarchitektur des thinkPHP5.0-Frameworks vor und stellt kurz die Konzepte und die grundlegende Verwendung von thinkPHP5.0-Anwendungen, Modulen, MVC, Treibern, Verhaltensweisen, Namespaces usw. vor. Freunde, die es benötigen, können darauf verweisen
Dieser Artikel beschreibt die Gesamtarchitektur des thinkPHP5.0-Frameworks. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Die ThinkPHP5.0-Anwendung ist auf Basis von MVC (Model-View-Controller) organisiert.
MVC ist ein Entwurfsmuster, das die Trennung von Eingabe, Verarbeitung und Ausgabe einer Anwendung erzwingt. Mithilfe von MVC wird eine Anwendung in drei Kernkomponenten unterteilt: Modell (M), Ansicht (V) und Controller (C), von denen jede ihre eigenen Aufgaben übernimmt.
5.0 Der URL-Zugriff wird durch Routing bestimmt. Wenn das Routing deaktiviert ist oder keine passende Route vorhanden ist, basiert es auf:
http://serverName/index .php (oder andere Anwendungseintragsdateien)/module/controller/operation/parameter/value...
Es ist notwendig, einige der folgenden Konzepte zu verstehen, die im Folgenden häufig erwähnt werden Inhalt und.
Eintragsdatei
Die vom Benutzer angeforderte PHP-Datei, die für die Verarbeitung des Lebenszyklus einer Anfrage verantwortlich ist (Hinweis: Am häufigsten handelt es sich um eine URL-Anfrage). Die Eintragsdatei ist index.php
, manchmal werden für bestimmte Anforderungen neue Eintragsdateien hinzugefügt. Beispielsweise handelt es sich bei allen Eintragsdateien um eine separat für das Hintergrundmodul festgelegte Eintragsdatei admin.php
oder um einen Controller-Programmeintrag think
.
Anwendung
Eine Anwendung ist in ThinkPHP ein Objekt, das die Systemarchitektur und den Lebenszyklus verwaltet. Sie wird durch die thinkApp
-Klasse des Systems vervollständigt in der Eintragsdatei Beim Aufrufen und Ausführen werden Anwendungen mit demselben Anwendungsverzeichnis (APP_PATH
) als dieselbe Anwendung betrachtet, eine Anwendung kann jedoch mehrere Eintragsdateien haben.
Die Anwendung verfügt über eine eigene unabhängige Konfigurationsdatei und eine öffentliche (Funktions-)Datei.
Modul
Eine typische Anwendung besteht aus mehreren Modulen. Diese Module befinden sich normalerweise in einem Unterverzeichnis im Anwendungsverzeichnis, und jedes Modul besteht aus unabhängigen Konfigurationsdateien, öffentlichen Dateien usw Klassenbibliotheksdateien.
5.0 unterstützt den Entwurf einer Einzelmodularchitektur. Wenn sich in Ihrer Anwendung nur ein Modul befindet, kann das Unterverzeichnis dieses Moduls in der Anwendungskonfigurationsdatei weggelassen und geändert werden :
'app_multi_module' => false,
Controller
Jedes Modul verfügt über eine unabhängige MVC-Klassenbibliothek und Konfigurationsdatei. Es gibt mehrere Controller unter einem Modul , und jeder Controller ist tatsächlich eine unabhängige Controller-Klasse.
Der Controller ist hauptsächlich dafür verantwortlich, Anfragen zu empfangen, die entsprechende Modellverarbeitung aufzurufen und sie schließlich über die Ansicht auszugeben. Streng genommen sollte der Controller nicht zu sehr in die Verarbeitung der Geschäftslogik involviert sein.
Tatsächlich kann der Controller in 5.0 übersprungen werden, indem wir die Anfrage direkt an ein Modell oder eine andere Klasse zur Verarbeitung weiterleiten.
Die Controller-Klasse von 5.0 ist flexibler und muss keine grundlegende Klassenbibliothek erben.
Eine typische Index-Controller-Klasse lautet wie folgt:
namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }
Operation
Ein Controller enthält mehrere Operationen (Methoden), und eine Operationsmethode ist die kleinste Einheit des URL-Zugriffs.
Das Folgende ist die Operationsmethodendefinition eines typischen Index-Controllers, der zwei Operationsmethoden enthält:
namespace app\index\controller; class Index { public function index() { return 'index'; } public function hello($name) { return 'Hello,'.$name; } }
Die Operationsmethode kann weggelassen werden Wenn für jeden Parameter ein nicht optionaler Parameter definiert ist, muss der Parameter über die Benutzeranforderung übergeben werden. Wenn es sich um eine URL-Anfrage handelt, wird er normalerweise über $_GET oder $_POST übergeben.
Modell
Modellklassen vervollständigen normalerweise die eigentliche Geschäftslogik und Datenkapselung und geben formatunabhängige Daten zurück.
Die Modellklasse muss nicht unbedingt auf die Datenbank zugreifen, und im 5.0-Architekturdesign wird die Datenbankverbindung nur hergestellt, wenn der eigentliche Datenbankabfragevorgang ausgeführt wird, was eine echte Lazy-Verbindung ist .
Die Modellschicht von ThinkPHP unterstützt mehrschichtiges Design. Sie können eine detailliertere Gestaltung und Arbeitsteilung auf der Modellschicht durchführen, z. B. die Aufteilung der Modellschicht in logische Schichten/Dienste Ebene/Ereignisebene usw.
Ansicht
Die nach dem Aufruf der Modellklasse durch den Controller zurückgegebenen Daten werden über die Ansicht in verschiedene Ausgabeformate zusammengestellt. Die Ansicht entscheidet, die Vorlagen-Engine aufzurufen, um den Inhalt zu analysieren und ihn dann je nach Bedarf auszugeben oder direkt auszugeben.
Ansichten verfügen normalerweise über eine Reihe von Vorlagendateien, die verschiedenen Controllern und Betriebsmethoden entsprechen, und unterstützen das dynamische Festlegen des Vorlagenverzeichnisses.
Treiber
Viele Komponenten des Systems übernehmen das Treiberdesign, das flexibler erweitert werden kann. Der Speicherort der Treiberklasse wird im Verzeichnis der Kernklassenbibliothek platziert default Sie können auch den Namensraum der Treiberklassenbibliothek neu definieren und den Speicherort der Treiberdatei ändern.
Verhalten
行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。
要执行行为,首先要在应用程序中进行行为侦听,例如:
// 在app_init位置侦听行为 \think\Hook::listen('app_init');
然后对某个位置进行行为绑定:
// 绑定行为到app_init位置 \think\Hook::add('app_init','\app\index\behavior\Test');
一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。
命名空间
ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4
的自动加载规范。
相关推荐:
Das obige ist der detaillierte Inhalt vonÜberblick über die Gesamtarchitektur des thinkPHP5.0-Frameworks [Anwendung, Modul, MVC, Treiber, Verhalten, Namespace usw.]. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!