Yii Framework – das PHP Framework meiner Wahl

Irgendwann stand oder steht wohl jeder PHP-Entwickler einmal vor dem Problem der Auswahl eines geeigneten PHP Frameworks. Bis vor einigen Monaten habe ich mich primär mit selbst erstellten Frameworks herum geschlagen. Nicht das die Frameworks schlecht waren, jedoch verspürte ich mehr und mehr den Drang, bekannte PHP-Frameworks kennen zu lernen. Dies ist nicht zuletzt dem Umstand geschuldet, dass am Markt befindliche Ressourcen nicht kompatibel zu selbst erstellten Frameworks sind (der Aufwand und somit die Kosten sind zu hoch).

So fiel meine Wahl zunächst auf ZEND Framework – das Flaggschiff unter den PHP Frameworks. ZEND ist ein sehr mächtiges aber leider auch ein unterirdisch performantes Framework. Die eigenartige auf Grund von PHP Abwärtskompatibilität angewendete Namespace-Implementierung mit Unterstrichen sowie die Komplexität des ZEND-Monsters haben mich jedoch zunehmend abgeschreckt. Mit ZEND gehen viele Dinge, wirklich sehr viele, aber in der Regel brauche ich diese Dinge nicht. Insofern bestand tief in mir der Wunsch nach einem schlankeren, Ressourcen schonendem und gut dokumentierten Framework Ausschau zu halten. Das Framework sollte zudem einfach konfigurierbar und modular verwendbar sein. Die Möglichkeit Extensions zur Erweiterung des Frameworks einzubinden, setze ich als gegeben voraus.

Folgende Komponenten sollte das Framework unbedingt an Board haben:

  • MVC
  • modular erweiterbar (Module)
  • i18n (Mehrsprachigkeit)
  • einfache Konfiguration
  • ORM einfach austauschbar (falls erforderlich)
  • gut aufgestellte Community (wichtig für Extensions und Support)
  • gute Dokumentation (sowie im Code als auch im User Guide)
  • Access Control & Rights Management
  • Unit Tests
  • gute Erweiterbarkeit und somit Flexibilität in jeglicher Hinsicht
  • Benutzer definiertes URL-Design (Routing)

Sicherlich erfüllen sehr viele PHP-Frameworks oben genannte Ansprüche, allerdings wollte ich nach ZEND einem noch jungen Projekt meine Aufmerksamkeit schenken. So viel mein Blick eher zufällig als gezielt auf Yii. Angestachelt durch den Yii Performance Vergleich mit diversen anderen Frameworks begann ich mich also in Yii einzulesen. Die ersten Tests verliefen zügig und funktionierten ohne Wehwechen – das kannte ich von ZEND auch anders. Module funktionieren von Haus aus, ohne das ich mich in Konfigurationsdateien tot wuseln muss. Selbst Module in Modulen in Modulen … funktionieren ohne groß Schnickschnack veranstalten zu müssen. Das hat mich dann doch sehr beeindruckt.

Das implementierte ORM (AR) ist sehr leistungsfähig, jedoch wie ich finde für Cloud Entwicklung nur bedingt geeignet. Das Problem des ORM ist schlichtweg, dass aus dem Code kein Datenbankschema generiert werden kann (zumindest nicht von Haus aus). Abgesehen davon beherrscht das ORM jedoch alles, was die tägliche Entwicklung benötigt. Mit Dcotrine2ORM, einer Extension zum Implementierung von Doctrine 2.0 in Yii, gibt es die für mich bessere Alternative, die sich ohne Probleme einbinden und nutzen lässt und diesen Missstand behebt.

Nun kann man denken was man will, die Leistungsfähigkeit und Performance eines Frameworks ist lediglich in einem realen Projekt sinnvoll einschätzbar. Von “Hello World” Tests halte ich persönlich nicht viel. Es gilt also ein Exempel zu statuieren, um über zuvor genannte Punkte eine gute Aussage treffen zu können. Ein Vergleich zu anderen Frameworks ist dadurch jedoch auch nur bedingt möglich.

Wie es der Zufall so will, holte ich also eine meiner Ideen aus der Schublade und begann zusammen einem Freund daraus ein Konzept zusammen zu tragen – zunächst alles ohne Yii :-) . Nachdem wir festgestellt hatten, dass sich die Idee umzusetzen lohnt, haben wir sämtliche erforderliche Seiten und Masken als Prototypen Sketches entworfen und von meinem Designer auf Basis dieser Grundlage ein Layout erstellen lassen. Kosten für weitere Dienstleistungen haben wir im Budget natürlich einfließen lassen, denn wenn man etwas macht dann richtig (-> no money no honey).  genug gesülzt…

Die Landingpage zur Registrierung, zum Login, Passwort zurück setzen etc. ist fertig gestellt und ich erlaube mir an dieser Stelle ein Zwischenfazit. Die Entwicklung mit dem Yii Framework macht einem erfahrenen Entwickler wie mir nicht zuletzt wegen der ausgezeichneten Dokumentation sehr viel Spaß. Das Framework erweist sich als sehr gelungen und flexibel erweiterbar. Komponenten und Erweiterungen lassen sich nach Bedarf sehr trivial ein- beziehungsweise abschalten.

Mit einem Speicherverbrauch (LAMP, inklusive Doctrine, i18n, Verwendung von Modulen, APC=on) von 3,5-5,5 MB pro Request für die bisher entstandenen nicht sonderlich komplexen Seiten ist Yii in meinen Augen sehr Ressourcen schonend. Zum (ungleichen) Vergleich – eine WordPress Installation benötigt ohne Zusatzfeatures 14 MB. Mit einigen Plugins sind 32 MB schnell geknackt. Ein Drupal langt mit 15-40MB ebenfalls üppig zu. Zu bedenken ist, dass unter anderem der Arbeitsspeicher die Anzahl synchroner Requests begrenzt. Wenn das System zum Beispiel 30GB für Apache-Prozesse einräumt (entspricht Anzahl Apache max. Connections multipliziert mit PHP memory_limit) komme ich mit meinem Messergebnis auf 30*1024 / 5,5 = 5.585 maximale mögliche Connections zur gleichen Zeit – das ist verglichen mit WordPress (14 MB, 2.194) oder Drupal (20 MB, 1.536) sehr viel. Dieser Wert ist rein rechnerisch zu betrachten und nicht praxistauglich. Hier spielen noch andere Faktoren (IO, Datenbank Connections, etc.) eine Rolle. Allerdings zeigt der Vergleich durchaus auf, dass Ressourcen für andere wichtige Dinge aufgespart werden.

Warum ich meine jungfräuliche Yii-Applikation mit WordPress/Drupal vergleiche? Weil beide geläufige und zuhauf eingesetzte Softwares sind und jeder diese Softwares kennt. Wie bereits geschrieben ist der Vergleich sehr ungleich. Meine Yii Applikation ist natürlich lange nicht so funktionell wie ein WordPress oder ein Drupal. Wenn ich allerdings bedenke, dass Doctrine schon eine fette Sau ist und die Messergebnisse im Debug Modus zu Stande kommen (Logging, Debug Toolbar, etc.), so kommt mir der Speicherverbrauch doch sehr niedrig vor.

Ich nehme dieses erste Posting zum Yii Framework zum Anlass, weiter über meine Erfahrungen mit dem Yii Framework zu berichten.

Stay tuned!

Links:
http://www.yiiframework.com - Yii Framework
http://framework.zend.com/ - Zend Framework

5 Kommentare

  • By nomos, 15. Dezember 2011 @ 13:05

    Hallo Robert,

    Yii beäuge ich auch schon seit einiger Zeit (2 Jahre?) und bin auch der Meinung, dass hier ein toller Werkzeugkasten vorliegt…

    … leider sehe ich kaum irgendwelche “relevanten” Umsetzungen mit Yii – warum??

    Wenn man sich die Yii abfragen in Goolgle-Insight anssieht, geht die Kurve steil nach oben – ich bin gespannt wo die Reise hingeht.

    … Fuel will anscheinend auch in die Richtung wie Yii.

    Viele Grüße aus dem Norden von Berlin
    nomos

  • By Robert Bernhard, 15. Dezember 2011 @ 13:57

    Yii ist noch recht jung und unpopulär. Es wurde erstmals Dezember 2008 der Öffentlichkeit zur Verfügung gestellt. Wie ich im Artikel bereit schrieb, kam ich auch eher durch Zufall auf Yii. Andere von mir nie eingesetzte PHP Frameworks (Codegniter, Cake, etc.) kannte ich namentlich durchaus. Mit Symfony und ZEND habe ich bereits gearbeitet. Mir war vor der intensiven Recherche der Name Yii allerdings nicht einmal bekannt. Und ich denke so geht es vielen.

    Mit der Zeit wird sich zeigen, ob Yii den großen Platzhirschen Zend und Symfony eine gute Konkurrenz sein kann. In meinen Augen besitzt das Framework dafür die besten Voraussetzungen. Maßgeblich wird dafür das Wachstum der Community in geläufigen Sprachzentren (bei Chinesen und Russen scheint das Framework recht beliebt zu sein) sein. Ich für meinen Teil verlasse mich ungern auf Aussagen anderer und daher erfolgt aktuell auch die Umsetzung eines recht großen Vorhabens mit dem Yii Framework. Meine Begeisterung ist bis heute nicht abgerissen… schauen wir mal.

    Grüße aus dem Westen Berlins

    Robert

  • By nomos, 15. Dezember 2011 @ 15:41

    Richtig: … man muss nich allen andern Fliegen hinterher ;-)

    btw: bist Du “Freelancer” oder Angestellter?

    Ich bin in der Planung eines Projektes, wo ich noch bei der Art der Umsetzung schwanke – eine Karte ist Yii.

    Das kann ich aber nicht allein stemmen…

    Gruss nomos

  • By Robert Bernhard, 15. Dezember 2011 @ 23:26

    Ich bin Angestellter im Software-Umfeld. Mit Yii und Konsorten beschäftige ich mich ausschließlich in meiner Freizeit. Hintergrund ist, dass ich technologisch auf dem Laufenden bleiben und neben der hauptberuflichen Arbeit auch eigene Ideen umsetzen möchte. Nicht selten entstehen dadurch technologische Mitnahmeeffekte für die tägliche Arbeit. Ich bilde mich quasi täglich fort :-) .

    Sofern du am Aufbau eines Netzwerkes interessiert bist, wäre ich grundsätzlich nicht abgeneigt. Aber das sollten wir in einem anderen Rahmen besprechen.

    Grüße Robert

  • By nomos, 16. Dezember 2011 @ 10:59

    … o.k.!

    ich wechsle mal den Kanal auf “normal eMail” ;-)

    nomos

Other Links to this Post

RSS Feed für Kommentare zu diesem Artikel. TrackBack URI

Hinterlasse einen Kommentar