Dieser Artikel stellt hauptsächlich die Gesamtarchitektur des thinkPHP5.0-Frameworks vor und stellt kurz die Anwendungen, Module, MVC, Treiber, Verhaltensweisen und Namespace von thinkPHP5 vor. 0 und andere Konzepte und grundlegende Verwendungszwecke können Freunde in Not finden
Dieser Artikel beschreibt die Gesamtarchitektur des thinkPHP5.0-Frameworks. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
ThinkPHP5.0-Anwendung basiert auf MVC (Modell-Ansicht-Controller) Kommen Sie und organisieren Sie.
MVC ist ein Entwurfsmuster, das die Trennung von Anwendungseingabe, -verarbeitung und -ausgabe erzwingt. Anwendungen, die MVC verwenden, sind in drei Kernkomponenten unterteilt: Modell (M), Ansicht (V) und Controller (C), von denen jede ihre eigenen Aufgaben übernimmt.
5.0's URL-Zugriff wird durch Routing bestimmt. Wenn das Routing deaktiviert ist oder keine passende Route vorhanden ist, basiert es auf:
serverName/index .php (oder andere Anwendungseintragsdateien)/module/controller/operation/parameter/value...
Es ist notwendig, einige der folgenden Punkte zu verstehen Konzepte, die möglicherweise im folgenden Inhalt häufig erwähnt werden.
Eintragsdatei
Die vom Benutzer angeforderte PHP-Datei, die für die Verarbeitung des Lebenszyklus einer Anfrage verantwortlich ist (Hinweis: nicht unbedingt eine URL). Anfrage) und schließlich Die gemeinsame Eintragsdatei ist index.php
Manchmal werden für einige spezielle Anforderungen neue Eintragsdateien hinzugefügt, z. B. eine separate Eintragsdatei für das Hintergrundmodul admin.php
oder ein Controller-Programmeintrag think
.
Anwendung
Eine Anwendung in ThinkPHP ist ein Objekt, das die Systemarchitektur und den Lebenszyklus verwaltet. Sie wird durch die thinkApp
-Klasse des Systems vervollständigt . Anwendung Wird normalerweise in der Eintragsdatei aufgerufen und ausgeführt. Anwendungen mit demselben Anwendungsverzeichnis (APP_PATH
) gelten als dieselbe Anwendung, 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 Klassenbibliothek-Dateien.
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, die für die Beantwortung von Anforderungen verantwortlich sind, und jeder Controller ist tatsächlich ein separater 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 durch Routing übersprungen werden, sodass wir die Anfrage direkt an ein bestimmtes Modell oder eine andere Klasse zur Verarbeitung weiterleiten können.
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), Operationsmethoden die kleinste Einheit des URL-Zugriffs.
Das Folgende ist die Definition der Operationsmethode 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 keine Parameter verwenden, sofern dies nicht optional ist Definierter Parameter, der Parameter muss über die Benutzeranforderung übergeben werden. Wenn es sich um eine URL-Anfrage handelt, wird er normalerweise über $_GET oder $_POST übergeben.
Modell
Modellklasse vervollständigt normalerweise die eigentliche Geschäftslogik und Datenkapselung und gibt 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 Datenbank-Abfrage-Vorgang ausgeführt wird. Ja, eine wirklich faule Verbindung.
ThinkPHP的模型层支持多层设计,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。
视图
控制器调用模型类后返回的数据通过视图组装成不同格式的输出。视图根据不同的需求,来决定调用模板引擎进行内容解析后输出还是直接输出。
视图通常会有一系列的模板文件对应不同的控制器和操作方法,并且支持动态设置模板目录。
驱动
系统很多的组件都采用驱动式设计,从而可以更灵活的扩展,驱动类的位置默认是放入核心类库目录下面,也可以重新定义驱动类库的命名空间而改变驱动的文件位置。
行为
行为(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 vonDetaillierter Überblick über die Gesamtarchitektur des thinkPHP5.0-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!