Detaillierte Analyse des automatischen Lademechanismus des thinkPHP5.0-Frameworks

黄舟
Freigeben: 2023-03-06 19:08:02
Original
1674 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich der Mechanismus zum automatischen Laden des thinkPHP5.0-Frameworks vorgestellt und das Konzept, das Prinzip, die Verwendung und die damit verbundenen Vorsichtsmaßnahmen des automatischen Ladens von thinkPHP5.0 ausführlicher analysiert Bei Bedarf können Sie sich auf

Die Beispiele in diesem Artikel beziehen sich auf den automatischen Lademechanismus des thinkPHP5.0-Frameworks. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Übersicht

ThinkPHP5.0 realisiert wirklich das On-Demand-Laden und alle Klassenbibliotheken übernimmt den automatischen Lademechanismus und unterstützt die Zuordnung von Klassenbibliotheken und das automatische Laden von Composer-Klassenbibliotheken.

Die Implementierung des automatischen Ladens wird durch die thinkLoader-Klassenbibliothek vervollständigt, und die Spezifikation für das automatische Laden entspricht PHPs PSR-4.

Automatisches Laden

Da die neue Version von ThinkPHP die Funktion des Namespace vollständig übernimmt, müssen Sie nur den Namespace korrekt definieren, in dem die Wenn der Pfad des Namespace mit dem Verzeichnis der Klassenbibliotheksdatei übereinstimmt, kann das automatische Laden der Klasse erreicht werden.

Die Reihenfolge der automatischen Ladeerkennung von Klassenbibliotheken ist wie folgt:

1. Automatische Ladeerkennung von PSR-4; -0 automatische Ladeerkennung;

Das System wird die entsprechende Klassenbibliotheksdatei automatisch laden, sobald die Erkennung wirksam wird.

Klassenbibliothekszuordnung

Wenn Sie unsere oben genannten Namespace-Definitionsspezifikationen befolgen, kann das automatische Laden der Klassenbibliothek grundsätzlich abgeschlossen werden, wenn jedoch weitere Namen definiert sind Bei weniger Platz nimmt die Effizienz ab, sodass wir Klassenbibliothekszuordnungen für häufig verwendete Klassenbibliotheken definieren können. Die Zuordnung benannter Klassenbibliotheken entspricht der Definition eines Alias ​​für die Klassendatei, was effizienter ist als die Namensraumpositionierung, zum Beispiel:

Sie können auch die Methode addClassMap verwenden, um Klassenbibliothekszuordnungsdefinitionen stapelweise zu importieren , zum Beispiel:
Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php');
Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');
Nach dem Login kopieren

Obwohl über die Klassenbibliothekszuordnung registrierte Klassen nicht unbedingt Namespace-Verzeichnissen entsprechen müssen, wird dennoch empfohlen, der PSR-4-Spezifikation zu folgen, um Klassenbibliotheken und Verzeichnisse zu definieren.
$map = [
  'think\Log'   => LIB_PATH.'think\Log.php',
  'org\util\array'=> LIB_PATH.'org\util\Array.php'
];
Loader::addClassMap($map);
Nach dem Login kopieren

Klassenbibliothek-Import

Wenn Sie die automatische Ladefunktion des Systems nicht benötigen oder keinen Namespace verwenden, können Sie auch die Importmethode des verwenden thinkLoader-Klasse zum manuellen Laden Klassenbibliotheksdateien, zum Beispiel:

Beispiel
Loader::import('org.util.array');
Loader::import('@.util.upload');
Nach dem Login kopieren

Der Klassenbibliotheksimport verwendet ebenfalls ein ähnliches Namespace-Konzept (erfordert jedoch keine tatsächliche Namespace-Unterstützung) , unterstützter „Root“-Namespace“ umfasst:
// 引入 extends/qrcode.php
Loader::import('qrcode', EXTEND_PATH);
// 助手函数
import('qrcode', EXTEND_PATH);
// 引入 extends/wechat-sdk/wechat.class.php
Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');
// 助手函数
import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');
Nach dem Login kopieren
目录 说明
behavior 系统行为类库
think 核心基类库
traits 系统Traits类库
app 应用类库
@ 表示当前模块类库包


Wenn Sie die Namespace-Definition des Systems vollständig einhalten, besteht im Allgemeinen keine Notwendigkeit, die Klassenbibliotheksdatei manuell zu laden und sie einfach direkt zu instanziieren.

Composer lädt automatisch

Version 5.0 unterstützt das automatische Laden von Klassenbibliotheken, die von Composer installiert wurden. Sie können sie direkt entsprechend dem Namespace in der Composer-abhängigen Bibliothek aufrufen.

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse des automatischen Lademechanismus des thinkPHP5.0-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage