Heim > Artikel > Backend-Entwicklung > Detaillierte Analyse des automatischen Lademechanismus des thinkPHP5.0-Frameworks
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.
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');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);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:
BeispielLoader::import('org.util.array'); Loader::import('@.util.upload');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');
目录 | 说明 |
---|---|
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!