Symfony Teil 1: Vergleich von PHP-Frameworks

Für ein Projekt muss ich eine PHP-Framework-Entscheidung treffen. Ich lese dazu einiges im Netz, aber die vielen Diskussion um Frameworks münden immer in der gleichen Empfehlung: Es kommt drauf an. Auch wenn das wahrscheinlich richtig ist, hilft es mir nur bedingt. Ich muss also selbst ran und tiefer in das Thema einsteigen.

Anforderungen

Ich arbeite seit einiger Zeit mit Ruby on Rails. Die Entwicklung macht damit einfach Spaß. Viele der Ideen von Ruby on Rails möchte ich auch von einem PHP-Framework geboten bekommen. Hier meine Anforderungen:

  • MVC-Architektur
  • Komfortabler Datenbankzugriff durch ORM, gerne auch ein Active-Record-Konzept
  • Template-Sprache: Ich will keine echo-Statements sehen!
  • Generierung: Per Kommandozeile Dateien anlegen (Scaffolding)
  • Testunterstützung: Die Testunterstützung im Ruby on Rails Bereich ist einfach super. Das will ich auch!
  • Gute Dokumentation und weitere Ressourcen wie lebendiges Forum, Issue Tracker
  • Dependency Injection und Möglichkeit, zu modularisieren

Die Kandidaten

Eine umfangreiche Liste von PHP-Framework findet man auf Wikipedia.

Zend

Zend ist immer noch der Platzhirsch. Das Projekt wird von Zend Technologies entwickelt, dem Marktführer unter den PHP-Unternehmen. Die Konzepte klingen zunächst gut. Meine Anforderungen scheinen weitestgehend bedient zu werden. Die aktuelle Version ist 2.2.

Ich schaue mir die Doku an und stoße auf ein Tutorial. Mit dem Tutorial erstellt man eine einfache Anwendung, die Musikalben verwaltet. Ich arbeite alle Schritte ab und am Ende funktioniert die Anwendung einwandfrei. Im Tutorial wird zwar auf ORM-Frameworks hingewiesen (Doctrine oder Propel), diese werden aber nicht eingesetzt. Eine Template-Engine wird nicht unterstützt, man kann sich selbst drum kümmern und Smarty einsetzen. Was mich zusätzlich abturnt, ist die Menge an Code, die ich per Copy & Paste aus dem Tutorial in meine Entwicklungsumgebung übernehmen muss. Der Anwendungsfall ist einfach und trotzdem habe ich am Ende eine Menge Code "geschrieben". Die Prinzipien Don't Repeat Yourself und Convention over Configuration sind hier nicht so gut umgesetzt wie beispielsweise in Ruby on Rails. Ich hoffe, dass die anderen Frameworks mir mehr entgegenkommen.

CakePHP

Der Name klingt ja schon mal lecker. Die meisten Konzepte auch. Allerdings gibt es keine Template-Engine. Auch wird Dependency Injection nicht explizit unterstützt, wie es bei Zend und Symfony der Fall ist.

Am Ende ist es eine Bauchentscheidung gegen CakePHP. Dazu beigetragen haben auch mäßige Youtube-Videos und die Geschichte des Frameworks, denn das Core-Team hat sich vor ein paar Jahren zerstritten und getrennt.

Symfony

Symfony passt am besten. Alle Anforderungen werden erfüllt. Zusätzlich finde ich gut, dass auch SASS und Coffeescript unterstützt werden. Die Template-Engine Twig gefällt mir gut und ich freue mich auf eine "echo-freie" Zeit.

CodeIgniter

CodeIgniter ist leichtgewichtig. Was manche als Vorteil sehen mögen, sehe ich eher kritisch. Ich will deutlich unterstützt werden von dem Framework meiner Wahl. Und hier geht mir CodeIgniter nicht weit genug.

Fazit

Die (vorläufige) Entscheidung geht zu Gunsten von Symfony aus. Da ich Symfony bisher nur vom Lesen kenne, geht es jetzt ans Eingemachte. Im Folge-Artikel möchte ich erste Erfahrungen sammeln. Als Beispielanwendung nehme ich die Idee aus dem Zend-Tutorial, also eine kleine Verwaltung von Musikalben.

 

bjoerne_com_bjoern_weinbrenner_softwareentwickler_icon_leistungen_02

Lust auf mehr? Als PHP-Entwickler und Softwarearchitekt kann ich Sie in Ihren Projekten unterstützen. Melden Sie sich gerne bei mir.

2017-01-28T13:52:52+00:00 06.09.2013|Tags: , , , , , |2 Comments

2 Kommentare

  1. Björn Weinbrenner 21. Oktober 2013 um 14:11 Uhr- Antworten

    Jüngst wurde mir das Framework Lavarel (http://laravel.com/) empfohlen. Ich werde es mir bei nächster Gelegenheit genauer ansehen.
    Danke an Sascha Brink von http://angularjs.de/ für den Tipp.

  2. Peter 6. April 2017 um 10:44 Uhr- Antworten

    Ich habe lange mit Symfony gearbeitet und bin jetzt zum PHP Framework rexo umgestiegen. Dieses erzeugt schnelleren und extrem schlanken Code. Was ich allerdings vermisse ist twig 😉

Hinterlassen Sie einen Kommentar