Code-Symfony
Serie: PHP-Frameworks Teil 2 - Symfony im Detail
Nur wenige PHP-Frameworks wurden langfristig und kontinuierlich weiterentwickelt. Symfony gehört dazu und ist eines der populärsten und ausgereiftesten.
- Serie: PHP-Frameworks Teil 2 - Symfony im Detail
- Teil 2: Serie: PHP-Frameworks Teil 2 - Symfony im Detail
- Teil 3: Serie: PHP-Frameworks Teil 2 - Symfony im Detail
- Teil 4: Serie: PHP-Frameworks Teil 2 - Symfony im Detail
- Teil 5: Serie: PHP-Frameworks Teil 2 - Symfony im Detail

Die Entscheidung für ein PHP-Framework ist nicht so einfach, wie man auf den ersten Blick vielleicht annehmen könnte. Für andere Programmiersprachen existiert oft nur ein Framework, das dort die große Masse an Entwickler bindet. Rails für Ruby, Grails für Groovy oder Django für Python sind hierfür bekannte Beispiele.
Im PHP-Umfeld sieht dies ganz anders aus. Dutzende Frameworks buhlen hier um die Gunst der Entwickler. Die Wahl eines Frameworks hängt neben der reinen Funktionalität meist auch von anderen Faktoren ab, die oftmals sogar ungleich wichtiger sind.
Gerade im Firmenumfeld gilt es oft folgende Fragen vor dem Einsatz einer Lösung zu beantworten: Wird das Framework kontinuierlich entwickelt? Wie groß ist die Community? Unter welcher Lizenz wird das Framework vertrieben? Wie gut ist die Dokumentation? Wie viele Entwickler mit Kenntnissen in diesem Framework sind auf dem Markt? Wie hoch ist die Chance, dass das Framework auch noch in einigen Jahren existiert?
Wählt man nach diesen Kriterien aus, lichtet sich der Dschungel an Möglichkeiten recht schnell. Übrig bleibt meist eine Hand voll bekannter Lösungen. Symfony ist eine von ihnen. Ursprünglich für den internen Gebrauch des französischen Internetunternehmens Sensio Labs entwickelt, wurde es vor mehr als drei Jahren unter die MIT-Open-Source-Lizenz gestellt und veröffentlicht. Seit dieser Zeit hat sich gerade in Frankreich, Deutschland und den USA eine große Entwickler-Gemeinschaft gebildet.
Auch heute noch sind viele Sensio-Labs-Mitarbeiter für die Entwicklung des Frameworks verantwortlich, allerdings immer häufiger unterstützt von freiwilligen Helfern aus der Community.
Model-View-Controller
Wie die meisten modernen Webframeworks arbeitet auch Symfony nach dem Model-View-Controller-Prinzip. Ziel dieses kurz MVC genannten Entwurfsmusters ist die strikte Trennung von Daten-, Anwendungs- und Anzeigelogik einer Anwendung. Alle Teile arbeiten weitgehend unabhängig voneinander und haben jeweils eine fest umrissene Aufgabe.
Der Model-Part ist für das Datenhandling und somit für die Zugriffe auf eine Datenbank verantwortlich. Für die Umsetzung der Daten in eine grafische Benutzeroberfläche ist der View zuständig. Beide Anwendungsteile werden von einem Controller gesteuert. Er entscheidet, welche Daten des Models in welchem View angezeigt werden.
Diese strikte Trennung hat den Vorteil, dass einzelne Programmteile einfacher ausgetauscht werden können. Sollen beispielsweise die Daten zukünftig nicht mehr in einer Datenbank, sondern in Dateien abgelegt werden, ist lediglich eine Änderung der Klassen im Model notwendig, die restlichen Applikationsteile sind nicht betroffen. Das MVC-Prinzip eignet sich somit hervorragend für den Einsatz in der Entwicklung grafischer Benutzeroberflächen.
Erste Schritte
Zur Installation der für die Entwicklung notwendigen Symfony-Sourcen gibt es mehrere Wege. Die komfortabelste Möglichkeit ist das Setup über das PHP-PEAR-Kommando, das auf den meisten Entwicklungssystemen bereits eingerichtet ist. Hierüber lässt sich das Framework mit den folgenden beiden Kommandozeilenbefehle installieren:
$> pear channel-discover pear.symfony-
project.com
$> pear install symfony/symfony
Auf diese Weise wird die aktuellste stabile Version installiert. Alternativ kann man aber auch ältere oder Beta-Versionen des Frameworks in Betrieb nehmen.
Alte Bekannte
Während bei vielen Frameworks das Not-Invented-Here-Syndrom vorherrscht, das alle nicht selbst entwickelte Lösungen als nicht gut genug abtut, geht Symfony einen anderen Weg. Viele Komponenten des Frameworks sind für sich betrachtet eigenständig entwickelte oder aus anderen Frameworks herausgelöste Implementierungen.
Wichtigste Vertreter sind beispielsweise die Datenbank-Layer Propel und Doctrine, der YAML-Parser Spyck, die Internationalisierungsfunktionen, die in ihrer ursprünglichen Form aus dem PHP-Framework Prado stammen, oder die MVC-Funktionalität, die auf dem Mojavi-Projekt basierten.