Heim  >  Artikel  >  Backend-Entwicklung  >  Offizieller Leitfaden zum Yii Framework, Serie 12 – Grundkenntnisse: Pfadaliase und Namespaces

Offizieller Leitfaden zum Yii Framework, Serie 12 – Grundkenntnisse: Pfadaliase und Namespaces

黄舟
黄舟Original
2017-02-11 09:47:101463Durchsuche



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.

1. Root-Alias

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;

  • : Gibt das Verzeichnis an, in dem sich die Eintragsskriptdatei befindet. Dieser Alias ​​ist ab Version 1.0.3 gültig.

    webroot

  • : Stellt das Verzeichnis dar, das alle Erweiterungen von Drittanbietern enthält. Dieser Alias ​​ist ab Version 1.0.8 gültig.

    ext

  • Wenn die Anwendung außerdem Module verwendet, definiert (Yii) auch einen Root-Alias ​​für jede Modul-ID, der auf das Root-Verzeichnis des entsprechenden Moduls verweist. Diese Funktion ist ab Version 1.0.3 verfügbar.

Durch die Verwendung von YiiBase::getPathOfAlias() können Aliase in ihre entsprechenden Pfade übersetzt werden. Beispielsweise würde

als

übersetzt werden. system.web.CControlleryii/framework/web/CController2. Klassen importieren

Durch die Verwendung von Aliasen können Klassendefinitionen einfach importiert werden. Wenn wir beispielsweise die Definition der CController-Klasse einschließen möchten, können wir den folgenden Code aufrufen


Yii::import('system.web.CController');
import-Methode gefolgt von

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_oncerequire_once

Tipp:
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:


3. Verzeichnis importieren
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.


Zusätzlich zum Import verweisen Aliase auf Klassen an vielen anderen Stellen. Beispielsweise kann ein Pfadalias an Yii::createComponent() übergeben werden, um eine Instanz der entsprechenden Klasse zu erstellen. Auch wenn die Klassendatei noch nie zuvor enthalten war.
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.

5. 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
eine Klasse unter dem Namensraum

. Für die Verwendung von Namespaces ist PHP 5.3.0 oder höher erforderlich.

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).


Stellungnahme:
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