Vorteile und Nachteile von Symfony

Symfony ist ein Webframework (Web Application Framework). Die verwendete Skriptsprache ist das allseits bekannte PHP, auf dem viele Datenbanken basieren.

Wozu dient ein Webframework?

Mit dieser Software lassen sich Webanwendungen, Webservices und dynamische Webseiten entwickeln. Sie vereinfacht sich wiederholende Tätigkeiten und fördert gleichermaßen die Dokumentation der Softwareentwicklung und die Wiederverwendung von Codes. Es entstehen klare, einfache und leicht zu wartende Strukturen durch bestimmte Konzepte wie KISS, Don’t repeat yourself und Konvention vor Konfiguration. 

Ein Webframework definiert Klassen vor. Diese dienen dazu, häufig eingesetzte Funktionen wie die sichere Authentifizierung, die generelle Sicherheit, den Mailversand, die Lokalisierung, die Performance via HTTP-Caching und das Erstellen von Webformularen zu automatisieren. Dadurch entstehen Webanwendungen, die sehr schnell lauffähig sind. Weitere Funktionen von Webframeworks sind:

  • Datenbankzugriff
  • Templating
  • Trennung von Code und Präsentation über den Model View Controller oder den Model View Presenter als Architekturmuster
  • Rapid Prototyping via Scaffolding

Das Webframework Symfony bietet auch wiederverwendbaren PHP-Komponenten und -Bibliotheken an.

Geschichte und Zielrichtung

Das plattformübergreifende Webframework Symfony wurde erstmals im Oktober 2005 durch den Chefentwickler Fabien Potencier unter der MIT-Lizenz (Massachusetts Institute of Technology) veröffentlicht. 

Der Anlass der Entwicklung ab 2005 war die steigende Popularität des Webframeworks Ruby on Rails, das aber auf der viel weniger geläufigen Skriptsprache Ruby basiert. 

Die Entwickler von Symfony wollten ein ähnliches MVC-Framework schaffen, das aber auf der schon damals sehr umfassend genutzten Skriptsprache PHP basiert. Dabei versuchten sie, die Konfiguration absolut zu minimieren, um den Einsatz deutlich zu vereinfachen.

Das führte dazu, dass Models in Symfony ohne gesonderte Angabe einer Konfiguration automatisch zu Datenbanktabellen zugeordnet werden, indem einfach die Singular-Plural-Namensgleichheit maßgebend ist. Dieses Zuordnungsmuster nennt sich Konvention vor Konfiguration. Mithilfe der Konsolenanwendung lassen sich einfache Webseiten mit Rapid Application Development entwickeln. 

Auch das gilt als großer Fortschritt für einfache Programmierungen. Im Sommer 2011 erschien die zweite Symfony-Version. Als Neuimplementierung unterschied sie sich komplett von der ersten Version. Daraus resultiert ein wichtiger Nachteil des Frameworks: Es gibt keine einfache Möglichkeit, vor 2011 entwickelte Anwendungen in der ersten Version nach der zweiten Version (und in noch spätere Versionen) zu migrieren. 

Seit 2011 besteht das Framework aus Modulen (sogenannte Bundles), die voneinander unabhängig lauffähig sind und sich nahtlos in den Frameworkprozess integrieren lassen, was wiederum ein Vorteil ist. Die Anwendung ist nun modular aufgebaut, wozu ein Dependency Injection Container dient. 

Dadurch ist sie einfach zu erweitern und auch zu testen. Gleichzeitig unterstützt sie Namespaces. Symfony 2 erforderte die Skriptsprache PHP 5.3 oder höher. Es folgten dann weitere Versionen, die mehr oder weniger abwärtskompatibel zu den Vorgängern sind. Seit Mai 2021 gibt es die Symfony-Version 5.3, die PHP 7.2.5 erfordert. Für sie läuft der Support bis Januar 2022.

Entscheidende Vor- und Nachteile des Webframeworks

Die konkreten Vorteile von Symfony bestehen darin, dass das Webframework besonders bei kommerziellen Projekten, die unter hohem Konkurrenzdruck erfolgreich sein müssen, einen sehr schnellen Workflow und eine höchst effiziente Arbeit, gleichzeitig eine höhere Kompatibilität mit anderen Objekten und rasche Fortschritte ermöglicht. 

Symfony gehört inzwischen zu den populärsten PHP-Lösungen, wobei PHP wiederum heute (2021) der unbestrittene, nahezu konkurrenzlose Standard bei Webseiten, ihren Content-Management-Systemen und auch Onlineshops ist. 

Es verwundert daher nicht, dass in KMU und von freiberuflichen Programmierern Symfony deutlich häufiger als andere Webframeworks eingesetzt wird. Damit müssen Quellcodes nicht mehr für jede Anwendung komplett neu geschrieben werden. Aus diesen und weiteren Eigenschaften ergeben sich folgende Vorteile von Symfony:

  • außergewöhnliche hohe Flexibilität beim Einsatz
  • vielseitige und große Auswahl an Funktionen
  • unkomplizierte Einbindung eigener PHP-Projekte und externer Quellen
  • einwandfreies Datenbankmanagement inklusive Verwaltung der Datenbankstruktur mithilfe eines Wrappers (Doctrine-Technologie), der über dem eigentlichen Datenbanksystem liegt, sodass der Programmierer nur noch mit Entitätsobjekten arbeiten muss
  • leichtes Auslesen von Objekten aus der Datenbank, leichte Übergabe an das Templete via Template-Engine
  • Unabhängigkeit der Datenbanksysteme
  • leichte Überführung von Projekten beispielsweise von MySQL auf SQLite
  • modularer Aufbau mit Bundles
  • komfortable Aufgabenverteilung durch den MVC (Model Viewer Controller)
  • aktive Community
  • hohe Performance von PHP
  • hohe IT-Sicherheit
  • ausgezeichnete Dokumentation
  • Rapid Development, kein Spaghetticode mehr
  • Clean-URLs durch integrierte Routing-Technologie
  • Erleichterung der Collaborative Work (wichtig bei großen Projekten)

Einige Nachteile wurden schon eingangs erwähnt, so etwa die erschwerte Migration der ersten zur zweiten Symfony-Version. 

Große PHP-Projekte weisen allerdings konstruktionsbedingt fast immer noch weitere spezifische Nachteile auf, die sich einfach aus nötigen Kompromissen bei der Konzeption ergeben. Dies wären die Nachteile von Symfony:

  • erschwerte bis teilweise unmögliche Überführung der ersten zur zweiten Version, begrenzte Abwärtskompatibilität weiterer Versionen
  • lange Einarbeitung durch Größe und Vielseitigkeit des Webframeworks erforderlich
  • zu komplex für kleine und einfache PHP-Projekte
  • eventuelle Probleme durch individuelle Bundles
  • teilweise veraltete externe Informationen

Pauschal ließe sich sagen, dass das Symfony-Framework seiner Vielseitigkeit ein wenig die Nutzerfreundlichkeit beim Programmieren geopfert hat. Das sehen allerdings sehr professionelle Programmierer nicht so, sie kommen mit den Anforderungen zurecht. 

Firmen allerdings, die das Webframework wegen seiner Vorteile einsetzen möchten, aber keine eigene Programmierabteilung haben, sollten sich Experten an Bord holen. Das gilt auf jeden Fall, wenn mit dem Symfony-Framework große Projekte umgesetzt werden sollen, wozu es ja eigentlich ausgelegt ist. 

Für Anfänger und Gelegenheitsprogrammierer eignet es sich ausdrücklich nicht. Sie müssten hierzu sehr viel recherchieren. 

Für ein kleineres Projekt lohnt sich das einfach nicht. Es gibt benutzerfreundliche Alternativen, die natürlich weniger umfänglich und flexibel ausfallen. Dazu gehören beispielsweise Slim, Yii oder CakePHP. 

Daneben existieren auch ähnlich komplexe und hochfunktionale Varianten wie Laravel oder das Zend Framework, die manche Programmierer einfach gegenüber dem Symfony-Framework präferieren.

Wichtige Eigenschaften und Merkmale des Frameworks

Einige der wesentlichen Eigenschaften wurden schon genannt. Es ist absolut flexibel und vielseitig, wodurch es praktisch in allen Bereichen eingesetzt werden kann. 

Wichtig: Gerade wenn die IT-Sicherheit extrem wichtig ist, setzen viele Firmen und ihre Programmierer auf das Symfony-Framework. Sein modulares Designs und die Option, es durch Bundles unbeschränkt um PHP-Funktionen zu erweitern, machen es theoretisch grenzenlos einsetzbar. 

Auch für sehr seltene Anwendungsbereiche liefert die Community zahlreiche Quellen. Die Bundles existieren unabhängig voneinander und beziehen sich auf jeweils eine Funktion des Webframeworks. So könnte beispielsweise ein fiktives Bundle für das Gästebuch alle Daten enthalten, mit denen das Gästebuch vollständig laufen kann (nicht die personenbezogenen Daten, sondern die für die Programmierung nötigen). Dazu gehören:

  • Anwendungslogik
  • Datenbankabfragen
  • Ressourcen (Skripts, Grafiken etc.)

Symfony-Entwickler veröffentlichen immer wieder ihre Bundles. Andere Entwickler können dann diese Applikationseinheiten in ihre Anwendung ohne Codeänderungen integrieren. 

Sie suchen sich praktisch ein Bundle für die jeweils erforderlichen Funktionen aus und halten damit ihre Installation schlank. Die Performance fällt durch diese schlanke Installation gegenüber sonstigen PHP-Frameworks überdurchschnittlich hoch aus, weil weniger Ressourcen verbraucht werden.

Fazit

Symfony ist ein sehr leistungsfähiges Webframework, das große Projekte hervorragend unterstützt und sich dabei außerordentlich performant und flexibel zeigt. Daher gehört es zu den Favoriten in vielen Firmen mit größeren Webprojekten, die zudem ein hohes Augenmerk auf die Sicherheit legen müssen. 

Die Einführung verlangt aber viel Expertise und möglicherweise eine fortwährende Betreuung, weil es praktisch kaum einen LTS (Long Time Support) für das Webframework gibt. Für jede einzelne Version seit 2007 lief/läuft der Support immer über rund acht Monate bis drei Jahre. 

Das betrifft auch die vorerst jüngste Version 5.3 seit Mai 2021 (Support über acht Monate). Allerdings kennen die Symfony-Entwickler diese Kritik und streben wohl schon länger einen mindestens dreijährigen Support für jede einzelne Version an, was wünschenswert wäre. 

Interessante Links:

Was kann das Symfony Framework?

Ein Überblick zu diesem PHP Framework

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar