Yii macht intensiven Gebrauch von Pfad-Aliasen. Ein Pfad-Alias verweist auf ein Verzeichnis oder einen Dateipfad. Er wird in Punkt-Syntax angegeben, ähnlich zum weitverbreiteten Namespace-Format (Namensraum):
RootAlias.pfad.zu.ziel
wobei RootAlias
den Alias eines existierenden Verzeichnisses darstellt.
Durch Aufrufen von YiiBase::setPathOfAlias() können wir neue Pfad-Aliase
definieren. Der Einfachheit halber sind schon folgende RootAliase
vordefiniert:
system
: Verweist auf das Frameworkverzeichnis von Yiiapplication
: Verweist auf das
Stammverzeichnis der Anwendungwebroot
: Verweist auf das Verzeichnis, das das
Eingangsscript enthält. Dieser Alias ist seit
Version 1.0.3 verfügbar.ext
: Verweist auf das Verzeichnis, das alle
[Erweiterungen]((/doc/guide/extension.overview) enthält. Dieser Alias steht
seit Version 1.0.8 zur Verfügung.Falls die Anwendung Module verwendet, wird für jedes Modul ein zusätzlicher RootAlias für jede ModulID auf das Stammverzeichnis des jeweiligen Moduls angelegt. Dieses Feature steht seit Version 1.0.3 zur Verfügung.
Mit YiiBase::getPathOfAlias() kann ein Alias in seinen entsprechenden Pfad
übersetzt werden. system.web.CController
würde zum Beispiel nach
yii/framework/web/CController
übersetzt werden.
Durch Verwendung von Aliasen können Klassendefinitionen sehr bequem importiert werden. Wenn wir zum Beispiel die Definition von CController importieren möchten, können wir folgenden Aufruf verwenden:
Yii::import('system.web.CController');
Die Methode import unterscheidet sich von include
und
require
durch ihre höhere Effizienz. Die Klassendefinition wird nicht
eingebunden, solange nirgends Bezug darauf genommen wird. Den selben Namespace
mehrfach zu importieren ist auch wesentlich schneller als include_once
und
require_once
.
Tipp: Wenn wir uns auf eine Klasse aus dem Yii-Framework beziehen, brauchen wir sie nicht zu importieren oder mit include einzubinden. Alle Kern-Klassen von Yii sind bereits vor-importiert.
Wir können auch die folgende Syntax verwenden, um ein ganzes Verzeichnis zu importieren, so dass Klassendateien in diesem Verzeichnis bei Bedarf automatsich eingebunden werden:
Yii::import('system.web.*');
Außer in import werden Aliase noch an vielen anderen Stellen verwendet, um Bezug auf Klassen zu nehmen. An Yii::createComponent() kann zum Beispiel auch ein Alias übergeben werden, um eine Instanz der entsprechenden Klasse zu erzeugen, auch wenn die Klassendatei vorher noch nicht eingebunden war.
Verwechseln Sie einen Pfad-Alias nicht mit einem Namespace. Ein Namespace bezieht sich auf eine logische Gruppe von einigen Klassen, um sie von anderen Klassennamen zu unterscheiden, selbst wenn ihre Namen die selben sind. Ein Pfad-Alias hingegen bezieht sich auf eine Klassendatei oder ein Verzeichnis. Ein Pfad-Alias kollidiert nicht mit einem Namespace.
Tipp: Da PHP vor Version 5.3.0 von Haus aus noch keine Namespaces unterstützt, können Sie keine Instanzen von Klassen erzeugen, die den selben Namen aber unterschiedliche Definitionen haben. Daher wird allen Klassen des Yii-Frameworks der Buchstabe 'C' (von engl.: Class, Klasse) vorangestellt, um Sie von benutzerdefinierten Klassen zu unterscheiden. Es wird empfohlen, dass die Präfix 'C' zur alleinigen Verwendung innerhalb des Yii-Frameworks reserviert bleibt und benutzerdefinierte Klassen mit anderen Präfixen versehen werden.
Signup or Login in order to comment.