Model-View-Controller (MVC)
Yii implementiert das Model-View-Controller-Architekturmuster (MVC), das im Bereich der Web-Programmierung breite Anwendung findet. MVC zielt auf eine Trennung von Geschäftslogik und Benutzerschnittstelle ab, so dass der Entwickler jeden dieser Bereiche bequem verändern kann, ohne den anderen zu beeinflussen. In MVC werden die Information (die Daten) und die Geschäftslogik durch das Model (Modell) repräsentiert. Der (auch "die") View (Präsentation) enthält Elemente der Benutzerschnittstelle, wie z.B. Text oder Formularelemente. Und der Controller (Steuerung) verwaltet die Kommunikation zwischen Model und View.
Neben der MVC-Implementierung führt Yii außerdem einen Front-Controller namens
Applikation
ein. Sie stellt die gekapselte Laufzeitumgebung für die Bearbeitung eines
Requests (Anfrage) dar. Die Applikation sammelt einige Informationen über den
Benutzer-Request und leitet ihn dann zur Bearbeitung an den passenden Controller weiter.
Das folgende Diagramm zeigt die statische Struktur einer Yii-Applikation:
Statische Struktur einer Yii-Applikation

Ein typischer Ablauf
Hier sehen wir den typischen Ablauf einer Yii-Anwendung beim Bearbeiten eines einzelnen Requests:
Typischer Ablauf einer Yii-Applikation

- Ein Benutzer schickt einen Request mit der URL
http://www.example.com/index.php?r=post/show&id=1
- Das Startscript erzeugt eine Instanz einer Applikation und startet diese.
- Die Applikation fragt bei der Anwendungskomponente
request
nach den Detailinformationen zum Request. - Über die
urlManager
-Komponente ermittelt die Applikation den angeforderten Controller. In diesem Beispiel ist der Controllerpost
. Es wird also die KlassePostController
verwendet. Die Action istshow
. Erst der Controller entscheidet, was diese Action bedeutet. - Die Applikation erzeugt eine Instanz des angeforderten Controllers, damit
dieser den Request weiter bearbeitet. Der Controller stellt fest, dass die
Action
show
sich auf auf eine Methode namensactionShow
in der Controller-Klasse bezieht. Er instanziiert daraufhin die mit dieser Action verbundenen Filter (z.B. Zugriffsschutz, Benchmark) und führt diese aus. Die Action wird ausgeführt wenn dies von den Filtern erlaubt wird. - Die Action liest das Model
Post
mit der ID1
aus der Datenbank - Die Action rendert einen
View namens
show
mit demPost
-Model. - Der View liest die Attribute des
Post
-Models und zeigt diese an. - Der View führt einige Widgets aus.
- Das Render-Ergebnis wird in ein Layout eingebettet.
- Die Action beendet das Rendern des Views und schickt das Ergebnis zurück zum Browser.