PHP Welches Framework: Symfony2 vs. CakePHP vs. Zend

rephluX

Ensign
Registriert
Okt. 2007
Beiträge
169
Ahoi Forum!

Wie der Titel schon sagt, suche ich für ein größeres Projekt ein gutes PHP Framework auf Basis von MVC. Ich komme eher aus der Microsoft-Ecke (ASP klassisch *würg*, vereinzelt .NET) und hab das ein oder andere PHP Projekt schon ungesetzt. PHP ist mir als Sprache somit nicht fremd, aber große OOP-lastige Projekte waren aber leider nie dabei. Das soll sich jetzt ändern und bei der Wahl des Frameworks zu berücksichtigen sein ;-)

Derzeit sieht meine favorisierte Liste wie folgt aus:

  1. CakePHP
  2. Symfony2
  3. Zend Framework 2

Zend Framework mag vielleicht das "mächtigste" sein, bringt aber, so wie ich das in meiner Recherche bisher gesehen hab, von allen 3 die steilste Lernkurve mit. CakePHP wiederum ist wohl recht fix, was das Erreichen der ersten Ergebnisse im Browser angeht. Und das ohne groß irgendwelche Konfigurations-Dateien zu erstellen wie beispielsweise bei Symfony 2.

Wichtig bei der Wahl ist mir nicht nur ein stabiles und flexibles System, sondern auch sehr gut dokumentiertes mit einer guten und großen Community dahinter. So wird meiner Meinung nach nicht nur die Einarbeitung erleichtert sondern gewährleistet auch einen Austausch mit anderen Entwicklern, wenn es mal an der ein oder anderen Stelle Probleme in der Entwicklung gibt.

Also an die PHP-Experten: Welches Framework steht bei euch an erster Stelle und warum? Gerne auch mit kurzen Beispielen, warum das entsprechende Framework die favorisierte Wahl ist.

Vielen Dank für hilfreiches Feedback und Input :)
 
Hey ich bin kein Experte aber dieser Beitrag ist recht interessant:
http://webrevisions.com/tutorials/php-framework-the-best-php-framework-for-2013/

Dort siehst du auch deutlich die hohe Postition von Yii und CodeIgniter. Ich finde du solltest dich auf jeden fall mit beiden mal beschäftigen.

Yii ist laut vielen Meinungen seehr mächtig und ich selbst benutze CodeIgniter und bin sehr zufrieden damit. Der Einstieg ist einfach und man hat viele Möglichkeiten. Vielleicht solltest du dir auch diese anschauen.
Hoffe dass du damit etwas anfangen kannst !:)

Gruß fl0w
 
Cake kenne ich nicht, von den beiden anderen gefällt mir Symfony2 allemal besser. Vielleicht tue ich Zend unrecht, aber das, was ich davon gesehen habe, gefiel mir gar nicht.
 
Alternativ wäre vielleicht FatFree für dich interessant - das ist eher ein Microframework - vielleicht passt es ja für deine Ansprüche.
 
Erstmal Danke für Euer Feedback bisher! CodeIgniter hatte ich wirklich nicht mehr auf dem Schirm. Gemessen an den Google Trends ist das System ja auch recht stark vertreten.

NullPointer schrieb:
Cake kenne ich nicht, von den beiden anderen gefällt mir Symfony2 allemal besser. Vielleicht tue ich Zend unrecht, aber das, was ich davon gesehen habe, gefiel mir gar nicht.
Kannst Du auch vielleicht kurz begründen, warum dies der Fall gewesen ist?
 
CakePHP gefiel mir besser als CodeIgniter und Zend, da es mMn den leichteren Einstieg bietet als Zend und eine bessere Struktur halt als CodeIgniter.
 
[X] Laravel Einfach und starker OOP Ansatz á .NET
 
Meiner Meinung nach bringt die Google Trends Analyse wenig. Zunächst einmal muss man sie auch richtig lesen. Die Ergebnisse beziehen sich mehrheitlich auf den asiatischen Raum, vor allem Indien. Leider kann man das nicht auf Europa plus USA, sondern lediglich auf Deutschland einschränken. Dann interessiert Yii niemanden mehr, und Symfony und das Zend Framework sind führend, vor CakePHP und dann erst CodeIgniter. Aber auch das ist sinnfrei, denn diese Betrachtung bezieht die Bedeutung der jeweils neuen Versionen nicht ein. Sowohl das Zend Framework als auch Symfony und CakePHP liegen in einer völiig veränderten Version 2 vor, die sehr viel gegenüber den Vorgängern ändern. Und zuguterletzt sagt die Frage "Wonach wurde wie viel gesucht?" schlicht gar nichts über die Qualität der Frameworks aus.

Nun meine persönliche Einschätzung. Von CodeIgniter und CakePHP kann ich nicht aus eigenen Erfahrungen berichten, hier greife ich auf ein empfundenes Stimmungsbild zurück. CodeIgniter gilt als sehr schnell und jeder sagt, man müsste das mal benutzen. Für Anwendungen im Firmenumfeld taten das aber offenbar nur wenige. CakePHP galt im Vergleich der Frameworks früher als schnarchlahm. Wie das mit Version 2 verbessert wurde, kann ich nicht sagen.

Nun zu den wohl am breitesten im deutschen Raum genutzten Frameworks. Beide nutzen inzwischen Namespaces und bieten über Composer verwaltete Pakete an, bei beiden gibt es ein Kommandozeilen-Tool für die Verwaltung. Das Zend Framework (ZF) kenne ich aus Version 1, und zwar auch aus späten 1er Versionen. Symfony (Sf) kenne ich seit kurzem, in der 2er Version. Somit sind die Erfahrungen mit ZF etwas älter. Ich muss sagen, dass man bei ZF1 mehr in der Dokumentation wühlen und länger probieren musste, bis man ein Projekt ans Laufen bekommen hat. Bei Sf2 ging das sehr viel schneller, die Stadard Edition bringt einen sehr schnell zu Resultaten. Die Dokumentation bei Sf2 ist das Beste, was ich in dem Umfeld kenne, allerdings bietet ZF auch einen signifikanten Teil der Doku in deutsch an. Vielleicht ist das für die Auswahl ja wichtig.

Meine Auswahl für ein Framework fiel vor einiger Zeit für Sf2 und gegen ZF2 aus, und ich habe das bisher nicht bereut. Was mir als langjähriger Entwickler an Symfony auffällt, ist der Grad an Durchdachtheit bis ins letzte Detail. Einige Beispiele:
  • Die standardmäßig angebotene Templatesprache Twig unterstützt Dot-Notation für Variablenzugriffe ("teilnehmer.vorname" kann z.B. ein Aufruf getVorname() auf einem ORM-Objekt sein)
  • Es wird mit Assetic ein Tool mitgeliefert, welches die Auslieferung aller JS- und CSS-Dateien über eine einzelne URL realisiert und die Daten auch komprimieren kann. Diese Reduktion der HTTP-Request beim Seitenabruf ist für die subjektive Geschwindigkeit beim Nutzer viel wichtiger als die eigentliche Geschwindigkeit des Frameworks.
  • Es gibt eine Entwicklungsumgebung, die eine Toolbar im Browser anbietet. Von da aus kann man bei jedem Abruf in bereits mitgelieferte Komponenten wie Logviewer oder Profiler wechseln. Ein solches "Framework-Frontend" ist mir von woanders in dem Umfang nicht bekannt.
  • Es gibt mit den Bundles ein sehr gut unterbautes System, um endlich mal wirklich modular arbeiten zu können, mit echter Chance, den Code später woanders erneut nutzen zu können. Das Übergreifen zwischen Bundles wird durch Dependency Injection geregelt, die sehr einfach über sogenannte Services in den Konfigdateien verdrahtet werden kann.
  • Es wurde so sehr schon vorab ins Detail daran gedacht, dass man später die Performance noch weiter steigern kann. Zum Beispiel sind beim Caching bereits Möglichkeiten zur Nutzung von Edge Side Includes (ESI) vorhanden, über die man sein Projekt später mit einem Reverse Proxy Cache wie Varnish verbinden kann, wo man dann einzelne Unterbereiche von Webseiten mit unterschiedlichen Cache-Lebensdauern versehen kann. All das ist schon verfügbar, und man muss dennoch zunächst gar nicht dran denken, weil man von der Existenz erst erfahren muss, wenn man es braucht. Ich denke daher, dass Sf2 besser skaliert als ZF2.
  • Für Symfony gibt es ein Eclipse-Plugin, welches Completion für die über den DI-Container geholten Objekte anbietet. Das ist für Eclipse-Nutzer mit F3 (Open Declaration) Vorliebe ein riesiges Plus. Vielfach hat DI den Nachteil, dass damit Code Completion zerbricht. Das ist hier nicht der Fall. Für umfassenden ZF2 Support in der IDE muss man hingegen das Zend Studio nehmen und das kostet eine Menge Geld.

Ja, viele dieser Tools wie Twig und Assetic kann man auch woanders nutzen, aber Symfony trifft hier meiner Meinung nach von vornherein die richtige Auswahl und liefert sie gleich mit. Auch die Nutzung von Doctrine2 als Standard-ORM ist eine gute Wahl.

Das ist eine subjektive Einschätzung. Ich hoffe, dass sie dennoch weiter hilft.
 
Zuletzt bearbeitet: (Eclipse-Infos ergänzt.)
Nixdorf schrieb:
Und zuguterletzt sagt die Frage "Wonach wurde wie viel gesucht?" schlicht gar nichts über die Qualität der Frameworks aus.
This! :)
Man kann natürlich weiterhin auf der einen Seite sagen, wenn es viele Suchanfragen gibt, dass auch dann viele Entwickler das entsprechende Framework einsetzen aber dennoch teile ich Deine Aussagen nach der Qualität. Das bekommt man von den Suchanfragen nicht raus.

Nixdorf schrieb:
Meine Auswahl für ein Framework fiel vor einiger Zeit für Sf2 und gegen ZF2 aus, und ich habe das bisher nicht bereut. Was mir als langjähriger Entwickler an Symfony auffällt, ist der Grad an Durchdachtheit bis ins letzte Detail. Einige Beispiele:

(...)

Das ist eine subjektive Einschätzung. Ich hoffe, dass sie dennoch weiter hilft.
Vielen Dank! Das liest sich schonmal sehr gut. Aktuell guck ich mir verschiedene Screencasts zu Sf2, CakePHP und Laravel an. ZF2 ist schon aus dem Rennen. Und CodeIgniter wohl auch, mal sehen ;-)
 
rephluX schrieb:
Aktuell guck ich mir verschiedene Screencasts zu Sf2, CakePHP und Laravel an. ZF2 ist schon aus dem Rennen. Und CodeIgniter wohl auch, mal sehen ;-)

Um anderen später die Entscheidung zu erleichtern, wäre es super, wenn du hier am Ende der Entscheidungsfindung noch berichten würdest, welche Kriterien bei dir ausschlaggebend waren. Also warum ZF2 aus dem Rennen ist, warum XY aus dem Rennen ist, und warum du am Ende ABC genommen hast.
 
Hier meine Erfahrungen:

Bin mittlerweile zu FuelPHP gewechselt - vorher hatte ich das ZF1 genutzt (ZF2 war zu diesem Zeitpunkt noch Beta).
Codeigniter gefällt mir auch sehr gut - aber vor allem die FuelPHP Community ist sehr nett.
 
Nixdorf schrieb:
Um anderen später die Entscheidung zu erleichtern, wäre es super, wenn du hier am Ende der Entscheidungsfindung noch berichten würdest, welche Kriterien bei dir ausschlaggebend waren. Also warum ZF2 aus dem Rennen ist, warum XY aus dem Rennen ist, und warum du am Ende ABC genommen hast.
Das werde ich natürlich machen, aber das ganze wird noch ein wenig dauern. Zum einen, weil der Projektstart noch in etwas weiter ferne liegt und zweitens, weil ich mir ein paar Frameworks etwas genauer angucken will.
 
Wir hatten für das komplette Front-End eines vor ein paar Jahren sehr bekannten Social Bookmarking Dienstes CakePHP eingesetzt. Die Wahl fiel auf CakePHP, weil die Features unseren Anforderungen entsprachen, vieles bereits mitgeliefert wurde, das Framework sich problemlos erweitern lies und es bereits massig Helper und Plugins für jeden erdenklichen Einsatzzweck gab. Die Doku ist in den letzten Monaten / Jahren deutlich besser geworden und die Community ist nach wie vor sehr aktiv. Ich könnte jetzt weitere (für unser Projekt passende) Vorteile von CakePHP aufzählen, aber das soll nicht der Sinn des Beitrages sein.

Meiner Meinung nach muss man das - für das Projekt passende - Framework aussuchen, die Eierlegende Wollmilchsau gibts einfach nicht. Was man immer im Hinterkopf behalten muss ist, dass jedes Framework ein gewissen Overhead generiert. Es mag vllt für die Homepage von Hans & Franz nicht wirklich bedeutend sein, wenn aber 1000 Leute gleichzeitig auf dem Projekt surfen, dann sieht die Welt wieder ganz anders aus, dann kommts nämlich darauf an, wie gut Caching Mechanismen (Memcache, APC, File Storage) im Framework integriert sind (bei CakePHP mussten wir damals nur 1-2 Config Parameter anpassen und schon wurde alles im Memcache zwischengespeichert).

Ich würde an Deiner Stelle die Anforderungen des Projekts genau studieren, das ganze auf einzelne Features herunterbrechen und anschließend mit den Frameworks vergleichen, was sich davon mit bereits fertigen Plugins vom jeweiligen Framework umsetzen lässt. Das spart hinterher nicht nur Zeit, sondern auch Frust. Desweiteren sollte man auch prüfen, ob das Framework überhaupt dafür geeignet ist, dass mehrere Leute gleichzeitig an verschiedenen Features arbeiten (sofern das hier überhaupt der Fall ist). Die Lern-Kurve eines Frameworks ist ja speziell in Unternehmen sehr wichtig, denn was ist, wenn ein Entwickler das Unternehmen verlässt und ein neuer das Projekt übernehmen muss? Wie gut eignet sich dann das Framework dafür? Und vorallem, was ist, wenn das Projekt irgendwann erweitert werden soll? Das sind halt die Fragen, die man sich bei einem Framework auf jedenfall stellen sollte. Wenn man ein Projekt alleine entwickelt und dann der einzige Experte für das Framework ist, kann auch das seine Vor-, aber auch Nachteile für einen selbst, das Projekt und das Unternehmen haben.

Wenn das zB ein Projekt ist, wo das meiste auf speziell angepassten Lösungen basiert (zB ein umfangreiches Intranet, welches mit anderen Lösungen kommunizieren muss), wäre CodeIgniter als Basis bestens geeignet, da es sich prima erweitern lässt und nicht mit (für diesen speziellen Fall) unnötigen Features daher kommt.

Ist das Projekt nur eine kleine Webseite, dann machts Sinn auf ein Framework, wie zb das Slim Framework zurück zu greifen, wenn man es ganz schlicht & einfach mag, tuts auch klein.php :).

Das Zend Framework wird gerne als das non-plus-ultra der Frameworks dargestellt. Für mich wirkt das aber wie der LKW unter den Frameworks, was jetzt nichts schlechtes bedeuten soll, aber das Zend Framework zielt halt stark auf große Unternehmen mit 10-20 Programmierern gleichzeitig ab, die dann auch möglichst bitte alle eine Zend Framework Zertifizierung haben.
 
hedsht schrieb:
Meiner Meinung nach muss man das - für das Projekt passende - Framework aussuchen, die Eierlegende Wollmilchsau gibts einfach nicht. Was man immer im Hinterkopf behalten muss ist, dass jedes Framework ein gewissen Overhead generiert.
Das ist schon klar. Sofern der Overhead sich in Grenzen hält bzw. dieser durch ein gutes Caching oder generelle (SQL)-Performance ausgleicht, ist das durchaus in Kauf zu nehmen und vor allem auch viel besser, als fertige CMS-Systeme zu verwenden. Die meisten bauen dann einfach eine TYPO3-Installation vor die Seite und nutzen davon gerade mal 30% der Features, wenn überhaupt. DAS is Overhead ;)

hedsht schrieb:
Ich würde an Deiner Stelle die Anforderungen des Projekts genau studieren, das ganze auf einzelne Features herunterbrechen und anschließend mit den Frameworks vergleichen, was sich davon mit bereits fertigen Plugins vom jeweiligen Framework umsetzen lässt. Das spart hinterher nicht nur Zeit, sondern auch Frust. Desweiteren sollte man auch prüfen, ob das Framework überhaupt dafür geeignet ist, dass mehrere Leute gleichzeitig an verschiedenen Features arbeiten (sofern das hier überhaupt der Fall ist). Die Lern-Kurve eines Frameworks ist ja speziell in Unternehmen sehr wichtig, denn was ist, wenn ein Entwickler das Unternehmen verlässt und ein neuer das Projekt übernehmen muss? Wie gut eignet sich dann das Framework dafür? Und vorallem, was ist, wenn das Projekt irgendwann erweitert werden soll? Das sind halt die Fragen, die man sich bei einem Framework auf jedenfall stellen sollte. Wenn man ein Projekt alleine entwickelt und dann der einzige Experte für das Framework ist, kann auch das seine Vor-, aber auch Nachteile für einen selbst, das Projekt und das Unternehmen haben.
Du hast natürlich durchaus Recht, aber bei der Wahl des Frameworks geht es für mich nicht nur primär um das eine Projekt. Wenn ich jetzt schon eine steile Lernkurve habe (je nach Framework vielleicht unterschiedlich steil), dann nicht nur um damit ein einziges Projekt umzusetzen. Nein, denn vielmehr such ich ein Framework, womit wir (mehrere professionelle Entwickler) in Zukunft für verschiedene Projekte umsetzen können, sofern es sich von der Art und Größe des Projektes anbietet. Ich will also nicht von Framework A zu B und dann weiter zu C wechseln. Denn es macht, finde ich, aus unternehmerischer Sicht keinen Sinn, den Aufwand (und damit letzendlich Kosten) zu betreiben, mich in mehreren Frameworks einzuarbeiten, dies dann aber Aufgrund von Zeit- und Termindruck nur eher oberflächlich, anstatt ein Framework wirklich gut benutzen zu können.

hedsht schrieb:
Das Zend Framework wird gerne als das non-plus-ultra der Frameworks dargestellt. Für mich wirkt das aber wie der LKW unter den Frameworks, was jetzt nichts schlechtes bedeuten soll, aber das Zend Framework zielt halt stark auf große Unternehmen mit 10-20 Programmierern gleichzeitig ab, die dann auch möglichst bitte alle eine Zend Framework Zertifizierung haben.
Zend ist sowieso schon aus dem Rennen ;) Eben weil es so mächtig ist. Ich hab mir jetzt ein bisschen was zu SF2 angeguckt, und das ist zwar schon recht mächtig und für den Anfang schon komplex, gefällt mir aber schonmal ganz gut. Laravel sieht auf den ersten Blick auch ganz gut aus. Neben CodeIgniter sind das auch die Frameworks, mit denen ich mich etwas genauer beschäftigen werden in der nächsten Zeit.
 
Wir setzen, als Unternehmen, täglich auf CakePHP und Typo3 :).

Wir haben uns (seit 2008) auf CakePHP eben aus den von dir genannten Gründen festgelegt, um die verschiedensten Projekte in möglichst relativ kurzer Zeit mit mehreren Leuten gleichzeitig umsetzen zu können.

Mir persönlich gefällt die Struktur von CakePHP, dass der "Core" von der App getrennt ist - vereinfacht (Security-)Updates des Frameworks. Desweiteren hat CakePHP keine "verrückte" Template-Engine-Syntax (wie zB Smarty), so dass auch Leute, die keine Ahnung von CakePHP haben, problemlos HTML/CSS zuarbeiten können. Controller, Models und Views sind (für mich) logisch zusammenhängend, gerade dadurch, dass CakePHP eben auf "conventions over configuration" setzt. Man muss sich anfangs zwar an die Struktur gewöhnen (und das ist meiner Meinung nach auch die erste große Hürde beim Lernen von CakePHP), spart dafür aber später die Zeit wieder ein, weil man relativ wenig Konfigurationsaufwand hat.

Zu Laravel und Symfony2 kann ich nichts sagen, weil ich mit den beiden bisher noch keine Erfahrungen gesammelt habe. CodeIgniter ist super, bringt aber halt eben nur die Basis-MVC-Struktur mit. In einzelnen Fällen kann es sogar auch Sinn machen sich mit CodeIgniter seine eigene Framework-Basis mit oft benutzten / nützlichen Plugins zu erstellen, aber dafür muss man schon Erfahrungen damit gesammelt haben.
 
Zurück
Oben