Symfony: Wandlungsfähiges PHP-Framework mit starker Community

Im Oktober 2005 veröffentlichte die französische Software-Firma SensioLabs das Open-Source-Framework Symfony, das eigentlich unter dem Namen Sensio Framework entwickelt worden war. Die ungewöhnliche Schreibweise des neuen Namens resultierte aus dem Bestreben, das alte Klassen- und Theme-Präfix sf beibehalten zu können. Ansporn für das Framework war das ein Jahr zuvor erschienene Ruby on Rails und der damit verbundene Wunsch des Entwicklerteams nach einer vergleichbaren Entwicklungsplattform für PHP-Projekte. Seitdem hat SensioLabs das Symfony Framework stetig weiterentwickelt. So fügte man 2011 mit Symfony 2 beispielsweise einen modularen Aufbau hinzu.

Was ist Symfony?

Bei Symfony handelt es sich um eine Kollektion aus rund 30 PHP-Bibliotheken, die sowohl im Paket als auch einzeln heruntergeladen und genutzt werden können. Abseits dieser Standard-Komponenten existieren zusätzliche Module, die entweder das Framework erweitern oder ebenfalls separat nutzbar sind. Laut den Angaben von SensioLabs verzeichnete man in den vergangenen zehn Jahren bereits mehr als 500 Millionen Downloads einzelner Pakete oder auch des gesamten Frameworks, was sich in der allgemeinen Verbreitung widerspiegelt: Zahlreiche Projekte wie z. B. das Content-Management-System Drupal, das Webanalyse-Tool Piwik oder die Foren-Software phpBB greifen auf Symfony-Komponenten zurück. Alle Pakete des Frameworks sind wiederverwendbar und stehen frei auf der offiziellen Homepage.

Symfony: Einführung in die Komponenten das Web-Frameworks

Dass Symfony als Entwicklungsbasis für Webprojekte aller Art dient, verdankt es vor allem seinem modularen Aufbau. Jedes Modul hat seine eigene Funktion, ist jedoch nicht auf die anderen Komponenten angewiesen, was dem Framework einen hohen Grad an Flexibilität und Erweiterbarkeit verleiht. So können Sie Symfony beispielsweise als Full-Stack-Framework nutzen, wenn Sie für Ihr Webprojekt eine sehr große Funktionsvielfalt benötigen. Darüber hinaus haben Sie die Möglichkeit, Ihr eigenes Symfony-Bibliotheken-Set zusammenzustellen oder eine schlanke Version des Frameworks zu erzeugen. So stimmen Sie die Komponenten optimal auf die Anforderungen Ihrer Web-Application ab – egal, ob es sich dabei um ein komplexes Enterprise-Projekt oder eine einfache Website handelt. Gleichzeitig haben Sie immer die Möglichkeit, Module hinzuzufügen bzw. zu entfernen, insofern sich die Rahmenbedingungen ändern.

Sie können u. a. aus folgenden Standard-Komponenten wählen:

  • Asset: Modul zur URL-Generierung und Versionierung von Bilddateien, CSS-Stylesheets und JavaScript-Anwendungen.
  • ClassLoader: ClassLoader sorgt dafür, dass eigene PHP-Klassen automatisch geladen werden.
  • Debug: Stellt Tools zum Debuggen von PHP-Code zur Verfügung, um Fehler aufzufinden und einzustufen.
  • DependencyInjection: Ermöglicht es, Standards für die Erzeugung von Objekten für das jeweilige Webprojekt zu definieren.
  • EventDispatcher: Elementare Komponente, die die Kommunikation der einzelnen Module untereinander in Form von Events regelt.
  • Form: Enthält Tools, mit denen Sie auf einfache Art und Weise wiederverwendbare HTML-Formulare erstellen.
  • Templating: Werkzeuge zur Kreierung eines Template-Systems.
  • Translation: Modul für die Internationalisierung des Projekts.
  • Validator: Gibt Ihnen die Möglichkeit, erstellte Klassen zu validieren.
  • Yaml: Lädt und speichert .yml-Dateien.
Tipp

Wussten Sie, dass die PHP-Frameworks Laravel und Symfony zu den beliebtesten Web-Technologien gehören? Wir zeigen, was sie so gut macht.

Model-View-Controller-Konzept zur Strukturierung der Webanwendung

Symfony ermöglicht die Umsetzung des Model-View-Controller-Ansatzes (MVC). Dieses Architekturmuster unterteilt Applikationen in die drei Bereiche

  • Daten und Kernfunktionalität (Model),
  • visuelle Darstellung der erzeugten Daten (View)
  • und Verarbeitung der Nutzereingaben (Controller).

Das MVC-Konzept sorgt für einen übersichtlichen, gut strukturierten Programmcode und eine hohe Flexibilität der verschiedenen Komponenten, die dank des Konzepts ausgetauscht und wiederverwendet werden können, da sie nicht an konkrete Eingabedaten gebunden sind. An dieser Stelle muss jedoch darauf hingewiesen werden, dass Symfony nicht zur ausgerufenen Riege der MVC-Frameworks zählt und keine integrierte Model-Komponente beinhaltet. Legen Sie ein neues Symfony-Projekt an, fehlt konsequenterweise auch der typische Model-Ordner. Mithilfe zusätzlicher ORM-Bibliotheken (Object Relational Mapper) wie die von SensioLabs empfohlene Doctrine oder Propel realisieren Sie die Objektspeicherung in Datenbanksysteme allerdings problemlos auf eigene Faust.

Um die Präsentationsschicht (View) Ihrer Webanwendung zu erstellen, nutzen Sie das Templating-Modul und kreieren entsprechende Templates, die Sie mithilfe sogenannter Helper (PHP-Objekte) durch spezifische Funktionen erweitern können. Die Controller-Ebene trägt standardmäßig die Bezeichnung index.php (zu finden im Ordner „web“). Die Nutzereingaben selbst heißen in Symfony wie auch bei vielen anderen Frameworks „Actions“.

Symfony: PHP als Nutzer-Magnet

Symfony ist eine Kollektion aus verschiedenen PHP-Bibliotheken, weshalb Sie die Skriptsprache installiert haben müssen, um das Framework nutzen zu können. Für die aktuell unterstützte Version der 2.x-Serie Symfony 2.8 ist mindestens PHP 5.3.9 notwendig. Symfony 3.1 und 3.2 benötigen PHP 5.5.9 oder eine höhere Version. Von Beginn an hatte das Entwicklerteam von SensioLabs das Ziel, eine Komponenten-Sammlung für PHP-Projekte zu kreieren, die mit vergleichbaren Frameworks in anderen Sprachen konkurrieren konnte. Insbesondere Ruby on Rails imponierte den französischen Entwicklern, weshalb sie sich bei der Zusammenstellung und Pflege der einzelnen Komponenten stark an der Struktur des bekannten Ruby-Frameworks orientierten.

Die Weiterentwicklung und der Erfolg des Symfony-Frameworks sind somit auch eng an die Geschichte der Skriptsprache geknüpft. Da diese als Open-Source-Sprache frei verfügbar ist und sich seit jeher in der Szene großer Beliebtheit erfreut, haben in den vergangenen Jahren auch diverse Entwickler zur Optimierung beigetragen. Die starke Performance-Steigerung, die mit PHP 7 verbunden ist, lässt darüber hinaus positive Auswirkungen auf die Leistungsfähigkeit künftiger Symfony-Webanwendungen vermuten.

Abwärtskompatibilität und LTS-Versionen versprechen Kontinuität

Seit dem Jahr 2013 erscheint halbjährlich eine neue Version von Symfony, worüber Nutzer, die sich bei dem Community-Service SensioLabsConnect registriert haben, zeitnah per E-Mail informiert werden. Das Framework alle sechs Monate auf eine höhere Version upzugraden, klingt zunächst nach einer sehr mühsamen und für komplexe Webanwendungen unpraktischen Angelegenheit. SensioLabs liefert jedoch die passenden Lösungen, die dem Framework und den entwickelten Anwendungen die nötige Kontinuität verleihen:

  • Abwärtskompatibilität: Alle Updates von Symfony zeichnen sich seit Version 2.3 durch Abwärtskompatibilität aus. Das bedeutet, dass die Funktionalität entwickelter Anwendungen auch beim Umstieg auf eine höhere Version gewährleistet wird. Allerdings existieren einige Ausnahmen, für die das uneingeschränkte Kompatibilitätsversprechen nicht gilt. Zudem sind große Releases wie Symfony 3.0 (4.0, etc.) von der Garantie ausgeschlossen.
  • Langzeitsupport: Für gewöhnlich werden Symfony-Versionen acht Monate lang unterstützt. Mit 2.3 veröffentlichte SensioLabs aber die erste Symfony-Edition mit Langzeitsupport (LTS). Diese LTS-Versionen sind für alle zwei Jahre geplant und gewähren 36 Monate lang Updates für Programmfehler und 48 Monate lang Sicherheits-Patches. Zusätzlich zur planmäßigen zweiten LTS-Version 2.7 stattete man auch die nachfolgende Version 2.8 mit dem verlängerten Unterstützungszeitrahmen aus.
  • „Kontinuierlicher Migrationsprozess“ für 3.0: Den Umstieg auf die letzte große Version Symfony 3.0 begleitet das Entwicklungsteam mit dem Konzept des Continuous Upgrade Path (dt. etwa: „kontinuierlicher Migrationspfad“). Als Entwickler einer Symfony-Anwendung können Sie detaillierte Hinweise für zu überarbeitenden Codezeilen in 2.x-Versionen einblenden lassen und diese so nach und nach an die neuen Vorgaben anpassen. Anschließend starten Sie dann das Upgrade auf die neue Version des Web-Application-Frameworks.

Die Vor- und Nachteile des Symfony-Frameworks

Die Suche nach dem geeigneten PHP-Framework glich in der Vergangenheit der Suche nach der Nadel im Heuhaufen: Der Wunsch nach einem leistungsstarken Bibliotheken-Set für die beliebte Websprache führte zur Entwicklung zahlreicher Vertreter, die ganz unterschiedlich für verschiedene Projekttypen geeignet waren. Einige wenige Frameworks – darunter auch Symfony – haben es dank kontinuierlicher Fortschritte allerdings geschafft, eine Vielzahl an PHP-Entwicklern zu überzeugen. Das Framework punktet vor allem bei der Strukturierung und Verknüpfung der einzelnen Module, mit deren Hilfe sich verschiedenartige Webanwendungen realisieren lassen, und steht heute daher zu Recht hoch in der Gunst der Community. Mit Langzeitsupport-Versionen und dem generellen Versprechen, die höchstmögliche Abwärtskompatibilität zu bieten, bietet das Entwicklerteam von SensioLabs ferner die passende Basis, um die Kontinuität der Symfony-Projekte zu gewährleisten.

Mitunter sind der Umstieg auf eine neue Version des Frameworks und die damit verbundenen Anpassungen am Code der entwickelten Symfony-Anwendung jedoch trotz der offerierten Hilfestellungen eine recht mühsame Angelegenheit. Die Komplexität ist auch im Allgemeinen das große Problem des PHP-Frameworks. Sie finden zwar allgemeine Dokumentationen sowie Erklärungen zu jedem einzelnen Modul, trotzdem ist es für Anfänger schwer, sich in das Framework einzuarbeiten. Des Weiteren offenbart das Symfony-Framework Schwächen in Sachen Performance – auch im Vergleich zu anderen PHP-Frameworks. Hier spielt auch die allgemein übliche Verwendung der ressourcenintensiven ORM-Bibliothek Doctrine eine große Rolle.

Für wen eignet sich die PHP-Komponenten-Sammlung?

Alle Symfony-Module zeichnen sich dahingehend aus, dass sie sowohl einzeln als auch im Verbund funktionieren. Dabei muss es sich bei letzterem nicht um das Standard-Framework-Bundle handeln: Sie können sich stattdessen auch Ihr eigenes Micro-Framework, das nur die Komponenten Ihrer Wahl beinhaltet, zusammenstellen. Auf diese Weise vermeiden Sie es, mit einer viel zu überladenen Bibliotheken-Struktur zu arbeiten, die weit über die Ansprüche des entwickelten Projekts hinausgeht. Doch Symfony ist auch in die andere Richtung skalierbar und mit zusätzlichen Modulen schnell zum Basiskonstrukt für anspruchsvolle Webprojekte umfunktioniert. So basieren nicht nur wie bereits erwähnt zahlreiche Anwendungen (vollständig oder teilweise) auf Symfony, sondern auch z. B. die Website des Musik-Streaming-Dienstes Spotify. Auch die französischsprachige Webpräsenz der berühmten Modezeitschrift Vogue zählt zu den Nutznießern des PHP-Frameworks.

Das Symfony-Framework stellt für Sie die richtige Wahl dar, wenn Sie mit PHP arbeiten und ein hohes Maß an Flexibilität besitzen wollen. Um die einzelnen Bibliotheken korrekt einzusetzen, bedarf es allerdings mehr als eines grundlegenden Know-hows über die Skriptsprache. Planen Sie also genügend Zeit ein, um die Eigenheiten des Frameworks kennenzulernen – und genießen Sie im Anschluss die Vorzüge der Entwicklung mit Symfony.