Pfadaliase werden in Yii häufig verwendet. Ein Pfadalias ist mit dem Pfad eines Verzeichnisses oder einer Datei verknüpft. Die Angabe erfolgt in Punktsyntax, ähnlich dem weit verbreiteten Namespace-Format:
RootAlias.path.to.target
, wobei RootAlias
ein Alias für ein vorhandenes Verzeichnis ist.
Durch die Verwendung von YiiBase::getPathOfAlias() können Aliase in ihre entsprechenden Pfade übersetzt werden . Beispielsweise würde system.web.CController
als yii/framework/web/CController
übersetzt werden.
Durch den Aufruf von YiiBase::setPathOfAlias() können wir einen neuen Root-Pfad-Alias definieren.
Der Einfachheit halber definiert Yii die folgenden Root-Aliase vor:
system
: stellt das Yii-Framework-Verzeichnis dar ;
zii
: stellt das Zii-Bibliotheksverzeichnis dar;
application
: stellt das Basisverzeichnis der Anwendung dar;
webroot
ext
Durch die Verwendung von YiiBase::getPathOfAlias() können Aliase in ihre entsprechenden Pfade übersetzt werden. Beispielsweise würde
als übersetzt werden. system.web.CController
yii/framework/web/CController
2. Klassen importieren
Yii::import('system.web.CController');
unterscheidet sich von
darin, dass sie effizienter ist. Eine importierte Klassendefinition wird erst dann tatsächlich einbezogen, wenn zum ersten Mal darauf verwiesen wird include
. Das mehrmalige Importieren desselben Namespace ist auch viel schneller als require
und . include_once
require_once
Wenn wir auf eine vom Yii-Framework definierte Klasse verweisen, müssen wir diese nicht importieren oder einschließen.Alle Yii-Kernklassen wurden vorab importiert.
Klassenzuordnung verwenden
Ab Version 1.1.5 ermöglicht Yii den Vorimport benutzerdefinierter Klassen mithilfe der Klassenzuordnung Mechanismus. Dies ist auch die Methode, die von den integrierten Yii-Klassen verwendet wird. Der Eager-Importmechanismus kann überall in einer Yii-Anwendung verwendet werden, ohne dass Dateien explizit importiert oder eingebunden werden müssen. Diese Funktion ist nützlich für ein Framework oder eine Bibliothek, die auf Yii basiert.
Um die Vorimportfunktion zu verwenden, führen Sie den folgenden Code aus, bevor CWebApplication::run() ausgeführt wird:
Yii::$classMap=array( 'ClassName1' => 'path/to/ClassName1.php', 'ClassName2' => 'path/to/ClassName2.php', ...... );
Wir können auch die folgende Syntax verwenden, um das gesamte Verzeichnis zu importieren, sodass Klassendateien in diesem Verzeichnis bei Bedarf automatisch eingebunden werden.
Yii::import('system.web.*');
4. Namespace
Pfadaliase nicht mit Namespaces verwechseln. Ein Namespace bezieht sich auf eine logische Kombination einiger Klassennamen, damit sie voneinander unterschieden werden können, auch wenn sie das haben gleichen Namen. Der Pfadalias wird verwendet, um auf eine Klassendatei oder ein Verzeichnis zu verweisen. Pfadaliase stehen nicht in Konflikt mit Namespaces.
Tipp:
Da PHP vor Version 5.3.0 von Natur aus keine Namespaces unterstützt, können Sie nicht zwei Instanzen einer Klasse mit demselben Namen, aber unterschiedlichen Definitionen erstellen. Aus diesem Grund wird allen Yii-Framework-Klassen der Buchstabe „C“ (was „Klasse“ bedeutet) vorangestellt, damit sie von benutzerdefinierten Klassen unterschieden werden können. Wir empfehlen, das Präfix „C“ nur für das Yii-Framework zu reservieren und benutzerdefinierten Klassen andere Buchstaben voranzustellen.eine Klasse unter dem Namensraum5. Klassen, die Namespaces verwenden
Eine Klasse, die Namespaces verwendet, bezieht sich auf eine Klasse, die in einem nicht-globalen Namespace deklariert ist. Beispielsweise ist die Klasse
Ab 1.1.5 ist es möglich, eine Klasse zu verwenden, die einen Namespace enthält, ohne ihn explizit einzuführen. Beispielsweise können wir eine Instanz von applicationcomponentsGoogleMap
erstellen, ohne uns mit dem importierten Pfad befassen zu müssen, und so den automatischen Importmechanismus von Yii verbessern. applicationcomponents
Um Klassen mithilfe von Namespaces automatisch zu importieren, muss das Format des Namespace dem Pfadalias ähneln. Beispielsweise muss der der Klasse applicationcomponentsGoogleMap
entsprechende Pfad mit dem Alias application.components.GoogleMap
übereinstimmen.
Das Obige ist der offizielle Leitfaden zum Yii-Framework, Serie 12 – Grundkenntnisse: Pfadaliase und Namespaces. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).