Was ich am Zend Framework lieber mag als an Symfony
Auch wenn es euch nicht so interessiert, aber meine Freundin hat heute Geburtstag und da muss ich ich doch als allererstes gratulieren. Happy Birthday. Und jetzt wieder zum Artikel. Ich möchte heute mal ganz subjektiv über meine Erfahrungen mit dem Zend Framework und Syfony reden. Als erstes muss ich mal sagen, dass ich kein Experte in der ganzen Framework Frage bin, da empfehle ich doch lieber mal Ralf Eggert.
Beide „Programme“ betiteln sich als Frameworks, was sie ja auch sind. Beide sind ein wenig anders im Aufbau, aber beide sind klar nach dem MVC Pattern entwickelt worden und sind sich deshalb schon ähnlich. Welche Ansätze da jetzt besser sind kann ich gar nicht sagen. Was ich aber am Zend Framework als sehr großen Vorteil sehe ist der Aufbau als Komponentenbibliothek. Ich kann fast alle in einem eigenen Kontext nutzen. Das ist mir mal wieder klar geworden, als ich in mein amilio Projekt den Twitter Client eingebaut habe. Zwei Zeilen Code und schon hat alles geklappt. Und wenn man genau schaut, dann liefert einem das Zend Framework hunderte (?) solcher mini Tools.
Symfony bietet zwar auch die eine Komponenten-Sammlung, die hat aber 5 Teile. Mehr leider nicht. Wenn ich was nutzen will, dann muss ich Symfony verwenden. Finde ich irgendwie schade. Der große Vorteil von Symfony ist natürlich, dass ich das Zend Framework nutzen kann, wenn ich eine Symfony Applikation baue, andersrum wird es schon schwieriger. Eigentlich gemein, da das Zend Framework da alles richtig gemacht hat, aber trotzdem Symfony davon profitiert.
Also wie gesagt, dass war meine subjektive Meinung und es würde mich freuen, wenn ihr auch euren Senf dazu abgebt.
Ach ja, ich vergleiche hier das Zend Framework und Symfony, da ich denke, dass die beiden die Zukunft dominieren werden. Auch wenn es sicherich viele andere Systeme gibt, die man im Auge behalten sollte.
Ich denke auch, dass die beiden Framework aktuell „die Nase vorn“ haben und die besten Aussichten haben. Ich habe mich mit Symfony noch nicht groß beschäftigt, da ich auf das ZF setze 😉
Dein Vergleich lässt sich auch einfach ausdrücken: Symfony ist ein „Full Stack Framework“, also alles aus einem Guss und irgendwie alles fest verwachsen.
Das ZF dagegen ist ein „Glue Stack Framework“, man kann alles so „zusammenkleben“ wie man es brauch, was mich persönlich als Entwickler mehr interessiert, da ich einfach mehr Freiheiten habe. Genau aus diesem Grund ist für mich z.B. CakePHP völlig uninteressant.
Hallo Nils,
ich stimme dir da völlig zu.
Beim Zend Framework sehe ich allerdings auch einige Schwächen, die man noch beheben sollte.
Vorwiegend sind das für mich:
– Kein ORM
– Teilweise uneinheitliche Handhabung der einzelnen Tools, das nervt und erinnert etwas an die ganzen PHP – Arrayfunktionen.
– Teilweise trotz der riesigen Dokumentation noch fehlende Doku-Teile, wenn es um spezielleres geht (z.B. im MVC).
Insgesamt trotzdem ein super Tool!
(Übrigens von mir natürlich auch alles Gute zum Gebutstag!) =P
Bin mittlerweile auch vom Zend Framework sehr überzeugt. OK mein großes Problem war, dass ich PHP mittels Zend Framework gelernt habe. Frei dem Motto: Beherrschst du das ZF brauchst du PHP nicht können 🙂 Einzig problematisch am ZF finde ich die vielen Freiheiten, ein paar klarere Vorgaben, insbesondere zum Design der Models wäre klasse.
@Dennis: Den Ausdruck Glue Stack Franmework kannte ich bis jetzt gar nicht. Vielen Dank, du hast soeben meinen Wortschatz bereichert.
Ich bin da recht offen, auch wenn ich mich derzeit stark auf das Zend Framework konzentriere. Würde es das Zend Framework nicht geben, wäre ich wohl damals bei Symfony gelandet.
Jeder soll das Werkzeug verwenden, mit dem er/sie am besten zum Ziel kommt. Die einen nehmen einen normalen Hammer, um einen Nagel einzuschlagen. Die anderen nehmen einen automatischen mit Pressluft arbeitenden Nageleinbringer. Mein Gott, es gibt ja sogar Wahnsinnige, die mit einem Fuchsschwanz einen Nagel einschlagen wollen. 😉
Und du hast Recht, wer Geburtstag hat, dem wird gratuliert. Also gratuliere ich auch!
Wenn ich richtig informiert bin, wird Symfony 2.0 dann auch eher einen Glue-Stack-Charakter haben. Die Einzelnen Komponeneten können dann über den Dependency-Injection-Container komfortabel „zusammengeklebt“ werden.
http://components.symfony-project.org/dependency-injection/ (Gelungene Implementierung, wie ich finde. Kann man bestimmt auch gut im ZF einsetzen)
Der gravierende Unterschied ist halt auch genau so einfach .. sf Projekte sind immer gleich aufgebaut, ZF durch genau diese Freiheit nicht.
Nimm nen sf-Programmierer setz ihn an *irgendein* anderes Projekt und er kommt in kürzester Zeit klar, weil alles immer gleich funktioniert. Bei ZF wirst du das logischerweise nicht schaffen.
Ich glaube der Punkt ist auch eher .. es ist halt wie immer davon abhängig was man für ein Projekt vorhat. Klar ist sf manchmal overdone .. aber manchmal wird einem halt auch erst später klar, dass man gerade sf #2 entwickelt hat .. mit dem ZF als Basis 😉
Also ich stimme dir da auch voll zu. Hab es auch mal sf probiert, bin aber dann schnell wieder beim ZF gelandet. Das mit dem benutzen einzelner Teile stimmt aber nicht so ganz. Zumindest hatte ich gestern das Problem, das ich einfach mal das Zend_Form benutzen wollte. Nachdem ich ca. 20 weitere Klassen aus verschiedenen Bereichen kopieren musste und es immernoch nicht lief, hab ich dann einfach das komplette ZF genommen. Durch den Autoloader verwendet es ja zum Glück immer das was auch gebraucht wird. Vielleicht wars nur ne Einstellungsgeschichte, wer weiss.
@ Post: Das ist nunmal der Unterschied zwischen FullStack- und UseAtWill-Frameworks.
@ 1: Wie sicher seit ihr euch bei „nase vorn“? Hat Cake nich sogar eigene Konferenzen? Oo
@ 2: Alles hat seinen Sinn. Und die Doku ist vielleicht nicht unabsichtlich so schmal gehalten, schonmal daran gedacht? S.j.
@ 3: Genau dafür ist es nicht gedacht :-/ Und da Models jeder anders sieht, da jeder MVC anders interpretiert, Models anders abstrahiert, sind Models generell im ZF nicht vereinheitlicht. Und Tools wie die Namespace-Unterstütztung machen es nach wie vor einfach die Sache zu Handhaben.
@ 6: Veto: Ein richtig konzipiertes Projekt im ZF sieht immer gleich aus, mein Blog wie unser CMS. Die vom Zend CLI Tool vorgeschlagene Dirstruktur ergibt immer Sinn, ob nun Modular oder nicht. Zumindest wenn man die Sache im MVC-Stil angehen will.
Ach und: nein ich arbeite nicht für Zend und ja ich hasse FullStack-Frameworks. 🙂
Gratuliere auch. Gruß Stefan.
@Julian Soweit ich verstanden habe setzt ZF mittlerweile auch auf Doctrine als ORM?
@Dennis Full Stack FW / Glue Stack FW. Cooler Begriff. Trifft vollkommen.
Allerdings sollte man erwähnen, dass symfony mit der naechsten Incarnation sf2.0 bewusst entkoppelter werden will. Zu erkennen ist das an den Komponenten, die bereits jetzt separat einsetzbar sind
Ein oft wiederholte Aussage von Fabien ist, dass er keinen Sinn darin sieht, etwas bereits gutes erneut zu implementieren. Von daher wird Symfony nie versuchen eine Alternative zu ZF zu sein.
Ich habe ZF immer mehr fuer eine Bibliothek gehalten. Das MVC Muster ist ja auch nur ein Teil des Ganzen. Das ZF selbst ist nicht danach entworfen, sondern bietet u.a. eines an.
Die Begriffe Full und Glue Stack Frameworks gefallen mir auch sehr 🙂
Ich entwickle seit 2006 mit Symfony, arbeite mich jedoch seit Kurzem in Zend Framework ein. Bei Symfony hatte ich schon von Anfang an dieses Unsicherheitsgefühl, ob es auch in der Zukunft evtl. gravierende Änderungen am Konzept und an der Architektur des Projektes mitkommt. Gerade beim Einstieg in Zend Framework erfreue ich mich an dem Gefühl, endlich wieder die „Herrschafft“ über meinen Code zurück zu bekommen.
Das Fehlen der ORM ist natürlich ein Manko, aber das Zusammenspiel mit Doctrine wird/ist Klasse. Wobei es irgendwie lustig ist, da ja Doctrine von sensiolabs finanziert wird, also von symfony ist.
Ich habe das Zend Framework vor einiger Zeit benutzt und hatte mehr das Gefühl, es wäre eine Bibliothek und kein Framework. Es ist eine Zusammenstellung mehrerer Klassen/Tools, von denen man viele schon zuvor bei PEAR finden konnte. Ein Framework muss nat. eine gewisse Struktur für die Anwendung vorgeben, sonst wäre es nur eine Bibliothek.
Das habe ich beim ZF immer vermisst und arbeite nun mit Symfony. Die großen Vorteile sind meiner Meinung nach das ORM, automatische Quelltext-Generierung und die vorgegebene Struktur. Mit einem Datenbankschema und ein paar Befehlen auf der Kommandozeile kann man mit Symfony fast eine ganze Anwendung generieren lassen. Das ZF erstellte damals nur leere Controller. Das ZendFramework nutze ich nun nur noch als Bibliothek.
@Halil: Doctrine wird nicht von sensiolabs finanziert, sondern ein Entwickler darf einen Teil seiner Arbeitszeit mit der Entwicklung an Doctrine verbringen. Das ist ein großer Unterschied 🙂
Das Doctrine Team entscheidet selber über die Roadmap, die wird nicht von sensiolabs gesteuert.
kohana v3!!!
Da weder Symfony noch das Zend Framework aktuell eine sinnvolle DI Implementierung haben mag ich beide nicht. Symfony macht für mich einen durchdachten Eindruck, allerdings braucht man dafür länger bis man sich zu recht findet bzw. weiß wie die Dinge zu laufen haben. Mit dem Zend Framework bin ich bisher auch nicht wirklich klar gekommen, die Umsetzung des MVC Ansatzes sagt mir nicht zu. Zudem fehlt mir eine sinnvolle Möglichkeit GUI Komponenten auszulagern/widerzuverwenden, die ViewHelper haben für mich nicht so richtig funktioniert.
Disclaimer: Ich bin für die Entwicklung unseres hausinternen Frameworks verantwortlich und dementsprechend „vorbelastet“ 🙂
@ Stefan Schön das du mal Cake mit in die Diskussion wirfst.
Zumindest Symfony ist garantiert nicht größer und populärer als Cake und ich bin sicher, dass mit Cake 2, dass dann komplett in PHP 5.3 geschrieben wird, ein rießen Hit gelandet wird.
Danke für die Glückwünsche!!!
@Christian [10]:
Ich hatte Doctrine (insbesondere 2.0) für mich auch schon als vernünftigste ORM-Lösung evaluiert… wusste allerdings nicht, dass Zend das offiziell empfiehlt.
Gibt es dazu irgendwo offizielle Links?
Ich kenne nur die Empfehlungen aus dem Developer-Blog.
Mir sind momentan auch noch die Glue Stack Frameworks sympathischer, weil ich dadurch mehr Kontrolle über die Applikation habe, die ich programmiere. Ich programmierte bis vor kurzem noch fast ohne Frameworks (bzw. nur mit wenigen Bibliotheken) und habe den Einsatzzweck durch einige interessante Diskussionen für mich herausgefunden.
Ich habe auch vor einigen Tagen einen Artikel darüber verfasst -> http://daraff.ch/2010/01/misserfolg-in-projekten-durch-frameworks/
Noch ein Nachtrag: Habe ich zufaellig heute entdeckt:
http://devzone.zend.com/article/11700-Integrating-Symfony-Dependency-Injection-Service-Container-with-Zend-Framework
Noch ein Nachtrag von mir zum Thema Rivalität:
[1] http://weierophinney.net/matthew/archives/232-Symfony-Live-2010.html
[2] http://fabien.potencier.org/article/41/symfony-live-conference-symfony-2-0-and-dependency-injection
Kein ORM bei Zend? Ist ein bischen knifflig, aber das geht ohne weiteres-> http://www.zendcasts.com/page/4/
Wie immer bei allen Programmiersachen kann ich nur sagen :“Es kommt drauf an“.
Die Cracks bei stackoverflow setzen auf kohana -> http://stackoverflow.com/questions/2648/what-php-framework-would-you-choose-for-a-new-application-and-why