0 follower

Konventionen

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.

1. URL

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.

2. Code

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

3. Konfiguration

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.

4. Datei

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.

5. Verzeichnisse

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.