In diesem Artikel werden wir über das Yii Framework sprechen, ein Framework, das wir für die Entwicklung von FullStack-Anwendungen in mehreren unserer in PHP implementierten Webprojekte verwendet haben. Einer der Hauptgründe für die Wahl von Yii ist seine im Vergleich zu anderen Frameworks sehr niedrige Lernkurve. Dies macht es für Entwickler einfach, es zu übernehmen und zu verwenden, so dass Anwendungen schnell und effizient bereitgestellt werden können. Darüber hinaus stellt es keine hohen Anforderungen an die Installation auf Webservern, was die Inbetriebnahme sehr einfach macht.
Was ist Yii?
Yii ist ein leistungsstarkes, komponentenbasiertes PHP-Framework, das für die Entwicklung umfangreicher Webanwendungen entwickelt wurde. Es ermöglicht eine hohe Wiederverwendung von Code und beschleunigt den Entwicklungsprozess erheblich.
Das Yii-Projekt wurde am 1. Januar 2008 mit dem Ziel gestartet, einige der Probleme des PRADO-Frameworks zu lösen. So zeichnet sich PRADO beispielsweise dadurch aus, dass es komplexe Seiten nur langsam verarbeiten kann, eine steile Lernkurve aufweist und mehrere Steuerelemente besitzt, die eine Anpassung erschweren. Im Gegensatz dazu ist Yii viel einfacher und effizienter. Im Oktober 2008, nach 10 Monaten privater Arbeit, wurde die erste Alpha-Version von Yii veröffentlicht. Am 3. Dezember desselben Jahres wurde Yii 1.0 formell vorgestellt.
Versionen von Yii
Derzeit gibt es zwei Hauptversionen von Yii: Version 1.1 und Version 2.0. Für die Version 1.1, die zur vorherigen Generation gehört, wird derzeit nur Wartung angeboten. Version 2.0 wurde komplett neu geschrieben und übernimmt die neuesten Technologien und Protokolle, darunter Composer, PSR, Namespaces, Traits und andere. Die Version 2.0 stellt die aktuelle Generation des Frameworks dar, und ihre Weiterentwicklung wird in den kommenden Jahren im Vordergrund stehen. Dieser Leitfaden basiert hauptsächlich auf der Version 2.0 des Frameworks.
Yii 1.1
1. Anforderungen
Um eine mit Yii entwickelte Anwendung zu betreiben, ist ein Webserver erforderlich, der PHP Version 5.1.0 oder höher unterstützt. Darüber hinaus ist es für Entwickler, die mit Yii arbeiten möchten, von Vorteil, über Kenntnisse in objektorientierter Programmierung (OOP) zu verfügen, da dieses Framework vollständig auf diesem Paradigma basiert.
2. Wofür wird Yii empfohlen?
Yii ist ein generisches Webentwicklungs-Framework, das sich für die Erstellung jeder Art von Webanwendung eignet. Sein geringer Ressourcenverbrauch und seine fortschrittlichen Caching-Funktionen machen es ideal für stark frequentierte Anwendungen wie Webportale, Foren, Content-Management-Systeme (CMS), E-Commerce-Plattformen und andere.
3. Wie ist Yii im Vergleich zu anderen Frameworks?
Yii folgt, wie andere PHP-Frameworks auch, dem MVC (Model-View-Controller)-Designmuster. Es zeichnet sich aus durch seine hohe Effizienz, eine breite Palette von Funktionen und eine hervorragende Dokumentation. Von Anfang an wurde es speziell für die Entwicklung von Webanwendungen konzipiert, im Gegensatz zu anderen Frameworks, die Nebenprodukte anderer Projekte sind oder mehrere Komponenten von Drittanbietern integrieren. Yii ist das Ergebnis der umfangreichen Erfahrung seiner Schöpfer in der Webentwicklung und einer gründlichen Analyse der beliebtesten Frameworks auf dem Markt.
Model-View-Controller (MVC)
Yii verwendet das in der Webentwicklung weit verbreitete Model-View-Controller (MVC)-Designmuster. Dieses Muster zielt darauf ab, die Geschäftslogik von den Aspekten der Benutzeroberfläche zu trennen, so dass Entwickler jeden dieser Teile unabhängig voneinander ändern können, ohne dass einer den anderen beeinflusst. Beim MVC-Muster stellt das Modell die Daten und Geschäftsregeln dar, die Ansicht verwaltet die Oberflächenelemente wie Text und Formulare, während der Controller für die Verwaltung der Interaktion zwischen dem Modell und der Ansicht verantwortlich ist.
Zusätzlich zu MVC führt Yii einen Front-Controller mit der Bezeichnung „Anwendung“ ein, der den Ausführungskontext der Anfrageverarbeitung darstellt. Die Anwendung ist dafür verantwortlich, Benutzeranfragen zu empfangen und sie zur Verarbeitung an den entsprechenden Controller weiterzuleiten.
Das folgende Diagramm veranschaulicht die statische Struktur einer Yii-Anwendung:

Statische Yii-Anwendungsstruktur
Ein typischer Aufgabenablauf
Das folgende Diagramm zeigt einen typischen Aufgabenablauf einer Yii-Anwendung bei der Lösung einer Benutzeranfrage:

- ein Benutzer stellt eine Anfrage mit der folgenden URL: http://www.example.com/index.php?r=post/show&id=1, und der Webserver bearbeitet die Anfrage, indem er das Startskript in index.php ausführt.
- Das Login-Skript erstellt eine Instanz der Anwendung und führt sie aus.
- Die Anwendung erhält die detaillierten Informationen über die Anfrage des Benutzers von der Anforderungskomponente.
- Der Controller bestimmt den Controller und die erforedrliche Aktion mit Hilfe der Anwendungskomponente urlManager. In diesem Beispiel ist der Controller post, was auf die Klasse PostController verweist, und die Aktion ist show, deren Bedeutung vom Controller bestimmt wird.
- Die Anwendung erzeugt eine Instanz des angeforderten Controllers, um die Anfrage des Benutzers zu lösen. Der Controller stellt fest, dass die show-Aktion auf die actionShow-Methode in der Controller-Klasse verweist. Anschließend erstellt er die mit dieser Aktion verbundenen Filter (z. B. Zugriffskontrolle, Benchmarking) und führt sie aus. Die Aktion wird ausgeführt, wenn die Filter sie zulassen.
- Die Aktion liest das Post-Modell, dessen ID 1 ist, aus der Datenbank.
- Die Aktion führt die Ansicht namens show mit dem Post-Modell aus.
- Die Ansicht liest und zeigt die Attribute des Post-Modells an.
- Die Ansicht führt einige Widgets aus.
- Das gerenderte Ergebnis wird in ein Layout eingefügt.
- Die Aktion vervollständigt die gerenderte Ansicht und zeigt sie dem Benutzer an.
Yii 2
Die Version 2.0 wurde komplett neu geschrieben und übernimmt die neuesten Technologien und Protokolle, darunter Composer, PSR, Namespaces, Traits und andere. Version 2.0 stellt die aktuelle Generation des Frameworks dar.
Model-View-Controller (MVC)
Yii implementiert das Model-View-Controller (MVC) Entwurfsmuster, was sich in der verwendeten Verzeichnisstruktur widerspiegelt. Das models-Verzeichnis enthält alle Model-Klassen, das views-Verzeichnis enthält alle Views (Templates) und das controllers-Verzeichnis enthält alle Controller-Klassen.
Das folgende Diagramm zeigt die statische Struktur einer Anwendung.

Jede Anwendung verfügt über ein web/index.php-Gateway-Skript, das einzige PHP-Skript, das über das Internet zugänglich ist. Das Eingangsskript nimmt eine eingehende Anfrage (request) entgegen und erstellt eine Instanz einer Anwendung, um sie zu bearbeiten. Die Anwendung löst die Anfrage mit Hilfe ihrer Komponenten auf und sendet sie an die übrigen MVC-Elemente. Widgets werden in Ansichten verwendet, um den Aufbau komplexer und dynamischer Oberflächenelemente zu unterstützen.
Lebenszyklus einer Anfrage (Request)
Das folgende Diagramm zeigt, wie eine Anwendung eine Anfrage bearbeitet:

- ein Benutzer stellt eine Anfrage an das Eingabeskript web/index.php.
- Das Eingabeskript lädt die Anwendungskonfiguration und erstellt eine Instanz der Anwendung, um die Anfrage zu bearbeiten.
- Die Anwendung löst den angeforderten Pfad mit Hilfe der Anforderungskomponente der Anwendung auf.
- Die Anwendung erstellt eine Instanz eines Controllers, um die Anfrage zu bearbeiten.
- Der Controller erstellt eine Instanz einer Aktion und führt die Filter der Aktion aus.
- Wenn einer der Filter fehlschlägt, wird die Aktion abgebrochen.
- Wenn alle Filter erfolgreich sind, wird die Aktion ausgeführt.
- Die Aktion lädt Daten aus dem Modell, möglicherweise aus der Datenbank.
- Die Aktion rendert eine Ansicht und übergibt ihr die geladenen Modelldaten.
- Das Ergebnis des Renderings wird an die Antwortkomponente der Anwendung weitergegeben.
- Die Antwortkomponente sendet das Rendering-Ergebnis an den Browser des Benutzers.
Yii in unserem Unternehmen
Bei WATA Factory haben wir vor einigen Jahren eine Anwendung mit Yii 1.1 entwickelt, da wir ein PHP-Framework benötigten, das sehr schnell zu entwickeln war. Wir verwenden auch Limesurvey als Umfrage-Engine, die auf Yii basiert.