Im Oktober 2005 ver­öf­fent­lich­te die fran­zö­si­sche Software-Firma Sen­sioLabs das Open-Source-Framework Symfony, das ei­gent­lich unter dem Namen Sensio Framework ent­wi­ckelt worden war. Die un­ge­wöhn­li­che Schreib­wei­se des neuen Namens re­sul­tier­te aus dem Bestreben, das alte Klassen- und Theme-Präfix sf bei­be­hal­ten zu können. Ansporn für das Framework war das ein Jahr zuvor er­schie­ne­ne Ruby on Rails und der damit ver­bun­de­ne Wunsch des Ent­wick­ler­teams nach einer ver­gleich­ba­ren Ent­wick­lungs­platt­form für PHP-Projekte. Seitdem hat Sen­sioLabs das Symfony Framework stetig wei­ter­ent­wi­ckelt. So fügte man 2011 mit Symfony 2 bei­spiels­wei­se einen modularen Aufbau hinzu.

Was ist Symfony?

Bei Symfony handelt es sich um eine Kol­lek­ti­on aus rund 30 PHP-Bi­blio­the­ken, die sowohl im Paket als auch einzeln her­un­ter­ge­la­den und genutzt werden können. Abseits dieser Standard-Kom­po­nen­ten exis­tie­ren zu­sätz­li­che Module, die entweder das Framework erweitern oder ebenfalls separat nutzbar sind. Laut den Angaben von Sen­sioLabs ver­zeich­ne­te man in den ver­gan­ge­nen zehn Jahren bereits mehr als 500 Millionen Downloads einzelner Pakete oder auch des gesamten Frame­works, was sich in der all­ge­mei­nen Ver­brei­tung wi­der­spie­gelt: Zahl­rei­che Projekte wie z. B. das Content-Ma­nage­ment-System Drupal, das Web­ana­ly­se-Tool Piwik oder die Foren-Software phpBB greifen auf Symfony-Kom­po­nen­ten zurück. Alle Pakete des Frame­works sind wie­der­ver­wend­bar und stehen frei auf der of­fi­zi­el­len Homepage.

Symfony: Ein­füh­rung in die Kom­po­nen­ten das Web-Frame­works

Dass Symfony als Ent­wick­lungs­ba­sis für Web­pro­jek­te aller Art dient, verdankt es vor allem seinem modularen Aufbau. Jedes Modul hat seine eigene Funktion, ist jedoch nicht auf die anderen Kom­po­nen­ten an­ge­wie­sen, was dem Framework einen hohen Grad an Fle­xi­bi­li­tät und Er­wei­ter­bar­keit verleiht. So können Sie Symfony bei­spiels­wei­se als Full-Stack-Framework nutzen, wenn Sie für Ihr Web­pro­jekt eine sehr große Funk­ti­ons­viel­falt benötigen. Darüber hinaus haben Sie die Mög­lich­keit, Ihr eigenes Symfony-Bi­blio­the­ken-Set zu­sam­men­zu­stel­len oder eine schlanke Version des Frame­works zu erzeugen. So stimmen Sie die Kom­po­nen­ten optimal auf die An­for­de­run­gen Ihrer Web-Ap­pli­ca­ti­on ab – egal, ob es sich dabei um ein komplexes En­ter­pri­se-Projekt oder eine einfache Website handelt. Gleich­zei­tig haben Sie immer die Mög­lich­keit, Module hin­zu­zu­fü­gen bzw. zu entfernen, insofern sich die Rah­men­be­din­gun­gen ändern.

Sie können u. a. aus folgenden Standard-Kom­po­nen­ten wählen:

  • Asset: Modul zur URL-Ge­ne­rie­rung und Ver­sio­nie­rung von Bild­da­tei­en, CSS-Style­sheets und Ja­va­Script-An­wen­dun­gen.
  • Class­Loa­der: Class­Loa­der sorgt dafür, dass eigene PHP-Klassen au­to­ma­tisch geladen werden.
  • Debug: Stellt Tools zum Debuggen von PHP-Code zur Verfügung, um Fehler auf­zu­fin­den und ein­zu­stu­fen.
  • De­pen­den­cy­In­jec­tion: Er­mög­licht es, Standards für die Erzeugung von Objekten für das jeweilige Web­pro­jekt zu de­fi­nie­ren.
  • Event­Dis­patcher: Ele­men­ta­re Kom­po­nen­te, die die Kom­mu­ni­ka­ti­on der einzelnen Module un­ter­ein­an­der in Form von Events regelt.
  • Form: Enthält Tools, mit denen Sie auf einfache Art und Weise wie­der­ver­wend­ba­re HTML-Formulare erstellen.
  • Tem­pla­ting: Werkzeuge zur Kreierung eines Template-Systems.
  • Trans­la­ti­on: Modul für die In­ter­na­tio­na­li­sie­rung des Projekts.
  • Validator: Gibt Ihnen die Mög­lich­keit, erstellte Klassen zu va­li­die­ren.
  • Yaml: Lädt und speichert .yml-Dateien.
Tipp

Wussten Sie, dass die PHP-Frame­works Laravel und Symfony zu den be­lieb­tes­ten Web-Tech­no­lo­gien gehören? Wir zeigen, was sie so gut macht.

Model-View-Con­trol­ler-Konzept zur Struk­tu­rie­rung der Web­an­wen­dung

Symfony er­mög­licht die Umsetzung des Model-View-Con­trol­ler-Ansatzes (MVC). Dieses Ar­chi­tek­tur­mus­ter un­ter­teilt Ap­pli­ka­tio­nen in die drei Bereiche

  • Daten und Kern­funk­tio­na­li­tät (Model),
  • visuelle Dar­stel­lung der erzeugten Daten (View)
  • und Ver­ar­bei­tung der Nut­zer­ein­ga­ben (Con­trol­ler).

Das MVC-Konzept sorgt für einen über­sicht­li­chen, gut struk­tu­rier­ten Pro­gramm­code und eine hohe Fle­xi­bi­li­tät der ver­schie­de­nen Kom­po­nen­ten, die dank des Konzepts aus­ge­tauscht und wie­der­ver­wen­det werden können, da sie nicht an konkrete Ein­ga­be­da­ten gebunden sind. An dieser Stelle muss jedoch darauf hin­ge­wie­sen werden, dass Symfony nicht zur aus­ge­ru­fe­nen Riege der MVC-Frame­works zählt und keine in­te­grier­te Model-Kom­po­nen­te be­inhal­tet. Legen Sie ein neues Symfony-Projekt an, fehlt kon­se­quen­ter­wei­se auch der typische Model-Ordner. Mithilfe zu­sätz­li­cher ORM-Bi­blio­the­ken (Object Re­la­tio­nal Mapper) wie die von Sen­sioLabs emp­foh­le­ne Doctrine oder Propel rea­li­sie­ren Sie die Ob­jekt­spei­che­rung in Da­ten­bank­sys­te­me al­ler­dings pro­blem­los auf eigene Faust. Um die Prä­sen­ta­ti­ons­schicht (View) Ihrer Web­an­wen­dung zu erstellen, nutzen Sie das Tem­pla­ting-Modul und kreieren ent­spre­chen­de Templates, die Sie mithilfe so­ge­nann­ter Helper (PHP-Objekte) durch spe­zi­fi­sche Funk­tio­nen erweitern können. Die Con­trol­ler-Ebene trägt stan­dard­mä­ßig die Be­zeich­nung index.php (zu finden im Ordner „web“). Die Nut­zer­ein­ga­ben selbst heißen in Symfony wie auch bei vielen anderen Frame­works „Actions“.

Symfony: PHP als Nutzer-Magnet

Symfony ist eine Kol­lek­ti­on aus ver­schie­de­nen PHP-Bi­blio­the­ken, weshalb Sie die Skript­spra­che in­stal­liert haben müssen, um das Framework nutzen zu können. Für die aktuell un­ter­stütz­te Version der 2.x-Serie Symfony 2.8 ist min­des­tens 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 Ent­wick­ler­team von Sen­sioLabs das Ziel, eine Kom­po­nen­ten-Sammlung für PHP-Projekte zu kreieren, die mit ver­gleich­ba­ren Frame­works in anderen Sprachen kon­kur­rie­ren konnte. Ins­be­son­de­re Ruby on Rails im­po­nier­te den fran­zö­si­schen Ent­wick­lern, weshalb sie sich bei der Zu­sam­men­stel­lung und Pflege der einzelnen Kom­po­nen­ten stark an der Struktur des bekannten Ruby-Frame­works ori­en­tier­ten. Die Wei­ter­ent­wick­lung und der Erfolg des Symfony-Frame­works sind somit auch eng an die Ge­schich­te der Skript­spra­che geknüpft. Da diese als Open-Source-Sprache frei verfügbar ist und sich seit jeher in der Szene großer Be­liebt­heit erfreut, haben in den ver­gan­ge­nen Jahren auch diverse Ent­wick­ler zur Op­ti­mie­rung bei­getra­gen. Die starke Per­for­mance-Stei­ge­rung, die mit PHP 7 verbunden ist, lässt darüber hinaus positive Aus­wir­kun­gen auf die Leis­tungs­fä­hig­keit künftiger Symfony-Web­an­wen­dun­gen vermuten.

Ab­wärts­kom­pa­ti­bi­li­tät und LTS-Versionen ver­spre­chen Kon­ti­nui­tät

Seit dem Jahr 2013 erscheint halb­jähr­lich eine neue Version von Symfony, worüber Nutzer, die sich bei dem Community-Service Sen­sioL­ab­s­Con­nect re­gis­triert haben, zeitnah per E-Mail in­for­miert werden. Das Framework alle sechs Monate auf eine höhere Version up­zu­gra­den, klingt zunächst nach einer sehr mühsamen und für komplexe Web­an­wen­dun­gen un­prak­ti­schen An­ge­le­gen­heit. Sen­sioLabs liefert jedoch die passenden Lösungen, die dem Framework und den ent­wi­ckel­ten An­wen­dun­gen die nötige Kon­ti­nui­tät verleihen:

  • Ab­wärts­kom­pa­ti­bi­li­tät: Alle Updates von Symfony zeichnen sich seit Version 2.3 durch Ab­wärts­kom­pa­ti­bi­li­tät aus. Das bedeutet, dass die Funk­tio­na­li­tät ent­wi­ckel­ter An­wen­dun­gen auch beim Umstieg auf eine höhere Version ge­währ­leis­tet wird. Al­ler­dings exis­tie­ren einige Ausnahmen, für die das un­ein­ge­schränk­te Kom­pa­ti­bi­li­täts­ver­spre­chen nicht gilt. Zudem sind große Releases wie Symfony 3.0 (4.0, etc.) von der Garantie aus­ge­schlos­sen.
  • Lang­zeit­sup­port: Für ge­wöhn­lich werden Symfony-Versionen acht Monate lang un­ter­stützt. Mit 2.3 ver­öf­fent­lich­te Sen­sioLabs aber die erste Symfony-Edition mit Lang­zeit­sup­port (LTS). Diese LTS-Versionen sind für alle zwei Jahre geplant und gewähren 36 Monate lang Updates für Pro­gramm­feh­ler und 48 Monate lang Si­cher­heits-Patches. Zu­sätz­lich zur plan­mä­ßi­gen zweiten LTS-Version 2.7 stattete man auch die nach­fol­gen­de Version 2.8 mit dem ver­län­ger­ten Un­ter­stüt­zungs­zeit­rah­men aus.
  • „Kon­ti­nu­ier­li­cher Mi­gra­ti­ons­pro­zess“ für 3.0: Den Umstieg auf die letzte große Version Symfony 3.0 begleitet das Ent­wick­lungs­team mit dem Konzept des Con­ti­nuous Upgrade Path (dt. etwa: „kon­ti­nu­ier­li­cher Mi­gra­ti­ons­pfad“). Als Ent­wick­ler einer Symfony-Anwendung können Sie de­tail­lier­te Hinweise für zu über­ar­bei­ten­den Code­zei­len in 2.x-Versionen ein­blen­den lassen und diese so nach und nach an die neuen Vorgaben anpassen. An­schlie­ßend starten Sie dann das Upgrade auf die neue Version des Web-Ap­pli­ca­ti­on-Frame­works.

Die Vor- und Nachteile des Symfony-Frame­works

Die Suche nach dem ge­eig­ne­ten PHP-Framework glich in der Ver­gan­gen­heit der Suche nach der Nadel im Heuhaufen: Der Wunsch nach einem leis­tungs­star­ken Bi­blio­the­ken-Set für die beliebte Web­spra­che führte zur Ent­wick­lung zahl­rei­cher Vertreter, die ganz un­ter­schied­lich für ver­schie­de­ne Pro­jekt­ty­pen geeignet waren. Einige wenige Frame­works – darunter auch Symfony – haben es dank kon­ti­nu­ier­li­cher Fort­schrit­te al­ler­dings geschafft, eine Vielzahl an PHP-Ent­wick­lern zu über­zeu­gen. Das Framework punktet vor allem bei der Struk­tu­rie­rung und Ver­knüp­fung der einzelnen Module, mit deren Hilfe sich ver­schie­den­ar­ti­ge Web­an­wen­dun­gen rea­li­sie­ren lassen, und steht heute daher zu Recht hoch in der Gunst der Community. Mit Lang­zeit­sup­port-Versionen und dem ge­ne­rel­len Ver­spre­chen, die höchst­mög­li­che Ab­wärts­kom­pa­ti­bi­li­tät zu bieten, bietet das Ent­wick­ler­team von Sen­sioLabs ferner die passende Basis, um die Kon­ti­nui­tät der Symfony-Projekte zu ge­währ­leis­ten.

Mitunter sind der Umstieg auf eine neue Version des Frame­works und die damit ver­bun­de­nen An­pas­sun­gen am Code der ent­wi­ckel­ten Symfony-Anwendung jedoch trotz der of­fe­rier­ten Hil­fe­stel­lun­gen eine recht mühsame An­ge­le­gen­heit. Die Kom­ple­xi­tät ist auch im All­ge­mei­nen das große Problem des PHP-Frame­works. Sie finden zwar all­ge­mei­ne Do­ku­men­ta­tio­nen sowie Er­klä­run­gen zu jedem einzelnen Modul, trotzdem ist es für Anfänger schwer, sich in das Framework ein­zu­ar­bei­ten. Des Weiteren offenbart das Symfony-Framework Schwächen in Sachen Per­for­mance – auch im Vergleich zu anderen PHP-Frame­works. Hier spielt auch die allgemein übliche Ver­wen­dung der res­sour­cen­in­ten­si­ven ORM-Bi­blio­thek Doctrine eine große Rolle.

Für wen eignet sich die PHP-Kom­po­nen­ten-Sammlung?

Alle Symfony-Module zeichnen sich da­hin­ge­hend aus, dass sie sowohl einzeln als auch im Verbund funk­tio­nie­ren. Dabei muss es sich bei letzterem nicht um das Standard-Framework-Bundle handeln: Sie können sich statt­des­sen auch Ihr eigenes Micro-Framework, das nur die Kom­po­nen­ten Ihrer Wahl be­inhal­tet, zu­sam­men­stel­len. Auf diese Weise vermeiden Sie es, mit einer viel zu über­la­de­nen Bi­blio­the­ken-Struktur zu arbeiten, die weit über die Ansprüche des ent­wi­ckel­ten Projekts hin­aus­geht. Doch Symfony ist auch in die andere Richtung ska­lier­bar und mit zu­sätz­li­chen Modulen schnell zum Ba­sis­kon­strukt für an­spruchs­vol­le Web­pro­jek­te um­funk­tio­niert. So basieren nicht nur wie bereits erwähnt zahl­rei­che An­wen­dun­gen (voll­stän­dig oder teilweise) auf Symfony, sondern auch z. B. die Website des Musik-Streaming-Dienstes Spotify. Auch die fran­zö­sisch­spra­chi­ge Web­prä­senz der berühmten Mo­de­zeit­schrift Vogue zählt zu den Nutz­nie­ßern des PHP-Frame­works.

Das Symfony-Framework stellt für Sie die richtige Wahl dar, wenn Sie mit PHP arbeiten und ein hohes Maß an Fle­xi­bi­li­tät besitzen wollen. Um die einzelnen Bi­blio­the­ken korrekt ein­zu­set­zen, bedarf es al­ler­dings mehr als eines grund­le­gen­den Know-hows über die Skript­spra­che. Planen Sie also genügend Zeit ein, um die Ei­gen­hei­ten des Frame­works ken­nen­zu­ler­nen – und genießen Sie im Anschluss die Vorzüge der Ent­wick­lung mit Symfony.

Zum Hauptmenü