Yii bevorzugt das Prinzip "Konvention statt Konfiguration". Folgen Sie den Konventionen, und Sie sind in der Lage, anspruchsvolle Anwendungen zu erstellen, ohne sich mit dem Schreiben und Verwalten komplexer Konfigurationen befassen zu müssen. Natürlich kann Yii, falls nötig, in praktisch allen Belangen per Konfiguration angepasst werden.
Nachfolgend beschreiben wir die Konventionen, die für das Programmieren mit
Yii empfohlen werden. Der Einfachheit halber nehmen wir an, dass WebRoot
für
das Verzeichnis steht, in dem eine Yii-Anwendung installiert wurde.
Per Vorgabe erkennt Yii URLs mit dem folgenden Format:
http://hostname/index.php?r=ControllerID/ActionID
Die GET-Variable r
bezieht sich auf die
Route, die von Yii in Controller und
Action aufgelöst werden kann. Wenn ActionID
weggelassen wird, verwendet der
Controller die Standardaction (festgelegt über CController::defaultAction).
Falls auch die ControllerID weggelassen wird (oder die Variable r
ganz
fehlt), verwendet die Applikation den Standardcontroller (definiert über
CWebApplication::defaultController).
Mit Hilfe des CUrlManagers ist es möglich, suchmaschinenfreundliche URLs zu
erzeugen bzw. zu erkennen, wie z.B.
http://hostname/ControllerID/ActionID.html
. Dieses Feature wird detailliert
in URL Management behandelt.
Yii empfiehlt, Variablen, Funktionen und Klassen in sog.
CamelCase-Schreibweise zu benennen, also alle Worte im Namen mit einem
Großbuchstaben zu beginnen und diese ohne Leerzeichen aneinanderzureihen.
Bei Variablen- und Funktionsnamen sollte das erste Wort klein geschrieben
werden, um sie von Klassennamen zu unterscheiden (z.B. $basePath
,
runController()
, LinkPager
). Es wird empfohlen, Namen von privaten
Klassenvariablen einen Unterstrich voranzustellen (z.B. $_actionList
).
Da vor PHP 5.3.0 noch keine Namespaces unterstützt werden, wird empfohlen, Klassennamen auf eindeutige Art zu benennen, um Konflikte mit Klassen von Drittanbietern zu vermeiden. Aus diesem Grund ist allen Klassen des Yii-Frameworks der Buchstabe "C" vorangestellt.
Für Controller-Klassen gilt die spezielle Regel, dass das Wort 'Controller' an
den Klassennamen angehängt werden muss. Die ID des Controllers ist definiert
als dessen Klassenname mit dem ersten Buchstaben kleingeschrieben und ohne das Wort
Controller
. Zum Beispiel hätte der PageController
die ID page
. Diese
Regel macht Anwendungen sicherer. Es führt auch zu saubereren Controller-URLs
(z.B. /index.php?r=page/index
statt /index.php?r=PageController/index
).
Eine Konfiguration besteht aus einem Array von Schlüssel/Werte-Paaren. Jeder
Schlüssel steht für den Namen einer Eigenschaft des zu konfigurierenden
Objekts und jeder Wert für den Startwert dieser Eigenschaft.
array('name'=>'Meine Anwendung', 'basePath'=>'./protected')
zum Beispiel
setzt die Eigenschaften name
und basePath
auf die entprechenden
Array-Werte.
Jede beschreibbare Eigenschaft eines Objekts kann konfiguriert werden. Falls sie nicht konfiguriert wurde, übernimmt sie ihren Vorgabewert. Es ist lohnenswert, bei der Konfiguration einer Eigenschaft die entsprechende Dokumentation zu rate zu ziehen, um den Startwert richtig anzugeben.
Bei Dateien hängen die Konventionen bezüglich ihrer Bezeichnung und Verwendung von deren Typ ab.
Klassendateien sollten nach der öffentlichen Klasse benannt sein, die sie
enthalten. Die Klasse CController zum Beispiel befindet sich in der Datei
CController.php
. Eine öffentliche Klasse ist eine Klasse, die von jeder
anderen Klasse verwendet werden kann. Jede Klassendatei sollte höchstens eine
öffentliche Klasse enthalten. Private Klassen (also Klassen, die nur von einer
einzigen öffentlichen Klasse verwendet werden) können sich gemeinsam mit
der öffentlichen Klasse in einer Datei befinden.
View-Dateien sollten nach dem Namen des Views benannt werden. Der View index
zum Beispiel befindet sich in der Datei index.php
. Eine View-Datei ist ein
PHP-Script das hauptsächlich HTML und PHP für Anzeigezwecke enthält.
Konfigurationsdateien können beliebig benannt werden. Eine Konfigurationsdatei ist ein PHP-Script, dessen einziger Zweck darin besteht, ein assoziatives Array zurückzuliefern, das eine Konfiguration darstellt.
Yii geht von einigen vorgegebenen Verzeichnissen für verschiedene Zwecke aus. Jedes davon kann bei Bedarf angepasst werden.
WebRoot/protected
: Dies ist das Stammverzeichnis der Anwendung
das alle
sicherheitsrelevanten PHP-Scripts und Datendateien enthält. Yii hat einen
Standardalias namens application
, der mit diesem Pfad verknüpft ist.
Dieses Verzeichnis sollte, genau wie alle darunterliegenden, vor Zugriff über das Web
geschützt werden. Sein Ort kann über CWebApplication::basePath angepasst werden.
WebRoot/protected/runtime
: Dieses Verzeichnis enthält private temporäre
Dateien, die während der Laufzeit der Anwendung erzeugt werden. Der
Webserver-Prozess muss in dieses Verzeichnis schreiben können. Sein Ort kann
über CApplication::runtimePath angepasst werden.
WebRoot/protected/extensions
: Dieses Verzeichnis enthält alle
Erweiterungen von Drittanbietern. Sein Ort kann über
CApplication::extensionPath angepasst werden.
WebRoot/protected/modules
: Dieses Verzeichnis enthält alle
Module der Anwendung, jedes davon in einem Unterverzeichnis
WebRoot/protected/controllers
: Dieses Verzeichnis enthält alle
Klassendateien für Controller. Sein Ort kann über
CWebApplication::controllerPath angepasst werden.
WebRoot/protected/views
: Dieses Verzeichnis enhält alle View-Dateien,
inklusive Controller-, Layout- und System-Views. Sein Ort kann über
CWebApplication::viewPath angepasst werden.
WebRoot/protected/views/ControllerID
: Dieses Verzeichnis enthält die
View-Dateien für eine einzelne Controller-Klasse. ControllerID
steht hier für die
ID des Controllers. Sein Ort kann über CController::getViewPath angepasst
werden.
WebRoot/protected/views/layouts
: Dieses Verzeichnis enthält alle
Layout-View-Dateien. Sein Ort kann über CWebApplication::layoutPath
angepasst werden.
WebRoot/protected/views/system
: Dieses Verzeichnis enthält alle
System-View-Dateien. System-Views sind Vorlagen, die zur Anzeige von Exceptions
und Fehlern verwendet werden. Sein Ort kann über
CWebApplication::systemViewPath angepasst werden.
WebRoot/assets
: Dieses Verzeichnis enthält veröffentlichte
Asset-Dateien. Eine Asset-Datei ist eine private Datei die
veröffentlicht werden kann, um sie einem Web-Besucher zugänglich zu machen.
Der Webserver-Prozess muss in dieses Verzeichnis schreiben können.
Sein Ort kann über CAssetManager::basePath angepasst werden.
WebRoot/themes
: Dieses Verzeichnis enthält verschiedene Themes
(Motive), die auf eine Applikation angewendet werden können. Sein Ort kann
über CThemeManager::basePath angepasst werden.
Signup or Login in order to comment.