Chrisi: PHP Framework, Symfony oder ZF?

Hallo zusammen,

aktuell plane ich ein Open Source Projekt, bin auf der Suche nach dem geeigneten Framework und würde mir gern eure Meinung einholen.

Folgendes sollte möglich sein:

*DB Layer
*Das Framework sollte anhand des DB Shemas alle Klassen anlegen (Model)
*Als Viewer muss es möglich sein Smarty zu nutzen
*Sprechende URLs sollten möglich sein
*Es muss einen EventDispatcher geben (Observer)
*Das Projekt sollte später durch den User über eigene Module erweiterbar sein
*Auch für User mit weniger Erfahrung sollte es möglich sein ein Modul zu entwicklen welches die Software erweitert
*Gute Performance, also wenig Overhead

In meine engere Auswahl ist das Framework Symfony und das Zend Framework gekommen. Beide scheinen obige Anforderungen zu erfüllen, wobei das Zendframework auf mich einen sehr komplexen Eindruck macht.

Mein Interesse liegt natürlich darin eine möglichst gute und verbreitete Grundlage zu verwenden um viele User und Entwickler von der Sofwtare zu überzeugen. Dennoch sollte es auch für Designer möglich sein die Templates schnell anzupassen ohne das ganze Framework vorher studieren zu müssen.

Für Zend spricht das es verbreitet ist, jedoch ist der Code für Einsteiger unverständlich und sehr komplex.

Symfony macht auf mich persönlich einen interessanten Eindruck und ist von der Progammstruktur etwas übersichtlicher und schlanker.

Meine Frage an euch, gibt es hier jemanden der sich mit diesen beiden Frameworks schon beschäftig hat und seine Erfahrung übermitteln kann?

Danke & Viele Grüße
Chrisi

  1. *DB Layer

    Symfony verwendet in der Model-Schicht Propel bzw. Doctrine, während im Zend Framework ein eigenes ORM (Zend_Db) verwendet, wobei es hier Pläne gibt, in der nächsten Version (2.0) Doctrine zu integrieren. Es ist auch mit der aktuellen Version möglich, Doctrine zu verwenden, allerdings ist das ganze nicht so einfach wie in Symfony.
    IMHO ist Doctrine Zend_Db weit überlegen, Version 2 (mittlerweile Beta-Status) sieht sehr vielversprechend aus.

    *Das Framework sollte anhand des DB Shemas alle Klassen anlegen (Model)

    Hier hat Symfony die Nase vorne - in ZF gibt es dieses Feature nur dann, wenn man ein vollwertiges ORM wie Propel oder Doctrine verwendet.

    *Als Viewer muss es möglich sein Smarty zu nutzen

    Für beide Frameworks gibt es entsprechende Adapter.
    Ich persönlich finde Twig besser.

    *Sprechende URLs sollten möglich sein

    Das funktioniert in beiden Frameworks, Symfonys Router bietet im Vergleich  aber weniger Möglichkeiten.

    *Es muss einen EventDispatcher geben (Observer)

    Der Symfony-EventDispatcher ist als standalone-Komponente verfügbar, lässt sich also auch in das ZF integrieren.

    *Gute Performance, also wenig Overhead

    Der Unterschied der reinen Framework-Performance ist nicht besonders groß (und auch nicht besonders wichtig) - einen Vergleich gibt es zB hier. Performance-Fallen sind natürlich die ORMs. Doctrine frisst im Vergleich zu Zend_Db sehr viel Speicher und ist bei der Verwendung der Doctrine Query Language (DQL) langsamer, bietet dafür natürlich viel mehr Features.

    Allgemein gilt ZF als flexibler als Symfony. ZF verfolgt die use-at-will-Philosophie (Es ist beispielsweise möglich, nur die MVC-Komponente zu verwenden, oder nur Zend_Form, etc.), während Symfony sich eher an Ruby on Rails orientiert, bei dem die Komponenten stärker aneinander gekoppelt sind. Daher wirkt das ZF zum Teil auch komplexer.