Zum Inhalt springen

Symfony

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 9. Januar 2026 um 09:31 Uhr durch imported>Primavera2023 (Leerzeichen vor/nach Bindestrich korrigiert).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vorlage:Hinweisbaustein

Symfony

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]]
Datei:Symfony project.png
Basisdaten

Maintainer Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Entwickler Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Aktuelle Version 7.4.2 (LTS), 8. Dezember 2025
8.0.2 (Aktuell), 8. Dezember 2025
Aktuelle Vorabversion Derzeit keine Vorabversion
Betriebssystem plattformübergreifend
Programmier­sprache Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Kategorie Webframework
Lizenz Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
deutschsprachig ja
Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)

Symfony ist ein in PHP geschriebenes Webframework und eine Menge von wiederverwendbaren PHP-Komponenten/Bibliotheken. Symfony wurde am 18. Oktober 2005 unter der MIT-Lizenz veröffentlicht.

Geschichte und Philosophie

Symfony wird seit 2005 unter der Führung von Fabien Potencier entwickelt. Es entstand parallel zur steigenden Popularität von Ruby on Rails und dem Wunsch nach einem ähnlichen MVC-Framework auf PHP-Basis. Symfony versucht die Konfiguration auf ein Minimum zu beschränken. Wenn keine Konfiguration dafür angegeben ist, erfolgt die Zuordnung von z. B. Models zu Datenbanktabellen über die Namensgleichheit in Singular und Plural (Konvention vor Konfiguration). Durch die Konsolenanwendung können einfache Webseiten mittels Rapid Application Development entwickelt werden.

Version 2 ist im Juli 2011 erschienen. Sie stellt eine Neuimplementierung dar, die sich gänzlich von Version 1 unterscheidet. Eine einfache Möglichkeit, Anwendungen von Version 1 nach Version 2 zu migrieren, existiert nicht. Das Framework besteht nun aus Modulen, sogenannten Bundles, welche voneinander vollkommen unabhängig lauffähig sind, aber nahtlos in den Framework-Prozess integriert werden können.<ref name="what_is_symfony" /> Durch die Verwendung eines Dependency Injection Containers ist die gesamte Anwendung modular aufgebaut. Dies bewirkt eine einfache Testbarkeit und Erweiterbarkeit. Außerdem werden Namespaces unterstützt. Somit erfordert Symfony 2 PHP 5.3 oder höher.

Bundles

Bundles sind voneinander gelöste Einheiten einer Webapplikation. Ein fiktives Gästebuch-Bundle enthält demnach alle Daten, die zur vollständigen Lauffähigkeit des Gästebuchs dienen. Dazu gehört nicht nur die erforderliche Anwendungslogik, sondern auch Datenbankabfragen und Ressourcen (Grafiken, Scripts etc.). Entwickler können entwickelte Bundles veröffentlichen, so dass andere Nutzer von Symfony diese Applikationseinheiten ohne direkte Codeänderungen integrieren können.

Merkmale

  • Konfiguration mit YAML, Annotations, XML oder PHP
  • Datenbankzugriff über ORM-Layer
  • Scaffolding von CRUD-Interfaces
  • Request-Dispatcher und dynamisches Routing für Clean URLs
  • Templates auf Basis von Twig oder nativer PHP-Syntax
  • Helper vereinfachen die Arbeit in den Templates (Ajax, JavaScript, Formulare uvm.)
  • Mehrsprachigkeit und I18N-Support
  • Datenvalidierung über Constraints
  • Filtern von über Formulare eingespeistem Schadcode
  • Komponenten für Session-Verwaltung, Request-Handling und Security
  • Umfassendes Caching der Ausgabe
  • Pluginfähig mit Bundles

Schichten

Das Entwurfsmuster Model-View-Controller wird von Symfony wie folgt umgesetzt:

Modell

Zur Speicherung der Objekte kommen zwei Plugins zur Auswahl (Doctrine und Propel) mit. Dabei handelt es sich um Bibliotheken zur objektrelationalen Abbildung, die PHP-Objekte in einer relationalen Datenbank speichern.

Die Beziehungen zwischen verschiedenen Modellen werden über sogenannte Associations festgelegt.

Ab der Version 1.1 von Symfony wurde das bisherige Standardframework Propel in ein Plugin ausgelagert und ist nicht mehr fester Bestandteil des Frameworks.

View

Unter einem View versteht man die Präsentationsschicht der Applikation. In der View-Schicht werden mit Hilfe des Controllers Inhalte bereitgestellt, die oftmals Templates für die Ausgabe einbeziehen. Dabei kann beliebiger PHP-Code in einem Template eingebettet werden. Symfony bringt sogenannte Helper mit, welche bestimmte Ausgaben in Templates erstellen oder formatieren können, etwa Links oder Formulare. Für sich wiederholende Ausgaben kann man auf Partials zurückgreifen, welche innerhalb der Templates iterierbar sind.

Controller

Der Controller formuliert die Geschäftslogik und bietet Schnittstellen in Form von Methoden, die mit der Logik interagieren. Diese Schnittstellen/Methoden werden wie in vielen anderen Frameworks auch Actions genannt. Es können auch Parameter für die Methoden übergeben werden. Die Struktur der URLs kann mit Hilfe von Routen flexibel angepasst werden.

Versionen

Version Erscheinungsdatum Support Support bis PHP Version Bemerkungen
Ältere Version; nicht mehr unterstützt: 1.0 Januar 2007 3 Jahre Januar 2010 >= 5.0
Ältere Version; nicht mehr unterstützt: 1.1 Juni 2008 1 Jahr Juni 2009 >= 5.1 Sicherheitsrelevante Updates bis Juni 2010
Ältere Version; nicht mehr unterstützt: 1.2 Dezember 2008 15 Monate Februar 2010 >= 5.2
Ältere Version; nicht mehr unterstützt: 1.3 November 2009 1 Jahr November 2010 >= 5.2 Wie 1.4, jedoch mit Kompatibilitäts-Ebene für bestehende Symfony-Projekte<ref name="1_3_1_4_diff" />
Ältere Version; nicht mehr unterstützt: 1.4 November 2009 3 Jahre November 2012 >= 5.2
Ältere Version; nicht mehr unterstützt: 2.0 Juli 2011 20 Monate März 2013 >= 5.3.2 Umstieg auf PHP 5.3<ref name="version-change" />
Ältere Version; nicht mehr unterstützt: 2.1 September 2012 9 Monate Mai 2013 >= 5.3.3 Überarbeitete Form-Komponente, Einsatz von Composer<ref name="composer" />
Ältere Version; nicht mehr unterstützt: 2.2 März 2013 8 Monate November 2013 >= 5.3.3 Überarbeitete Form-Komponente, Einsatz von Composer<ref name="composer" />
Ältere Version; nicht mehr unterstützt: 2.3 Mai 2013 3 Jahre Mai 2016 >= 5.3.3 Erste LTS (Long Term Support) Version
Ältere Version; nicht mehr unterstützt: 2.4 November 2013 8 Monate Juli 2014 >= 5.3.3
Ältere Version; nicht mehr unterstützt: 2.5 Mai 2014 8 Monate Januar 2015 >= 5.3.3
Ältere Version; nicht mehr unterstützt: 2.6 November 2014 8 Monate Juli 2015 >= 5.3.3
Ältere Version; nicht mehr unterstützt: 2.7 Mai 2015 3 Jahre Mai 2018 >= 5.3.9 Zweite LTS (Long Term Support) Version
Ältere Version; nicht mehr unterstützt: 2.8 November 2015 3 Jahre November 2018 >= 5.3.9 LTS (Long Term Support) Version<ref name="version-2-8-lts" />
Ältere Version; nicht mehr unterstützt: 3.0<ref name="version-3" /> November 2015 8 Monate Juli 2016 >= 5.5
Ältere Version; nicht mehr unterstützt: 3.1<ref name="version-3-1" /> Mai 2016 8 Monate Januar 2017 >= 5.5 PSR-6 kompatible Cache-Komponente, LDAP Unterstützung
Ältere Version; nicht mehr unterstützt: 3.2 November 2016 8 Monate Juli 2017 >= 5.5.9
Ältere Version; nicht mehr unterstützt: 3.3 März 2017 8 Monate Januar 2018 >= 5.5.9
Ältere Version; nicht mehr unterstützt: 3.4 November 2017 3 Jahre November 2020 >= 5.5.9 LTS (Long Term Support) Version<ref name="version-2-8-lts" />
Ältere Version; nicht mehr unterstützt: 4.0 November 2017 8 Monate Juli 2018 >= 7.1.3
Ältere Version; nicht mehr unterstützt: 4.1 Mai 2018 8 Monate Januar 2019 >= 7.1.3
Ältere Version; nicht mehr unterstützt: 4.2 November 2018 8 Monate Juli 2019 >= 7.1.3 Nur noch Sicherheits-Updates bis Januar 2020
Ältere Version; nicht mehr unterstützt: 4.3 Mai 2019 8 Monate Januar 2020 >= 7.1.3 Sicherheits-Updates bis Juli 2020
Ältere Version; nicht mehr unterstützt: 4.4 November 2019 3 Jahre November 2022 >= 7.1.3 LTS (Long Term Support) Version, Sicherheits-Updates bis November 2022
Ältere Version; nicht mehr unterstützt: 5.0 November 2019 8 Monate Juli 2020 >= 7.2.5
Ältere Version; nicht mehr unterstützt: 5.1 Mai 2020 8 Monate Januar 2021 >= 7.2.5
Ältere Version; nicht mehr unterstützt: 5.2 November 2020 8 Monate Juli 2021 >= 7.2.5
Ältere Version; nicht mehr unterstützt: 5.3 Mai 2021 8 Monate Januar 2022 >= 7.2.5
Ältere Version; noch unterstützt: 5.4 November 2021 3 Jahre November 2024 >= 7.2.5 LTS (Long Term Support) Version, Sicherheits-Updates bis Februar 2029
Ältere Version; nicht mehr unterstützt: 6.0 November 2021 14 Monate Januar 2023 >= 8.0.2
Ältere Version; nicht mehr unterstützt: 6.1 Mai 2022 8 Monate Januar 2023 >= 8.1.0
Ältere Version; nicht mehr unterstützt: 6.2 November 2022 8 Monate Juli 2023 >= 8.1.0
Ältere Version; nicht mehr unterstützt: 6.3 Mai 2023 8 Monate Januar 2024 >= 8.1.0
Aktuelle Version: 6.4 November 2023 3 Jahre November 2026 >= 8.1.0 LTS (Long Term Support) Version, Sicherheits-Updates bis November 2027
Ältere Version; nicht mehr unterstützt: 7.0 November 2023 8 Monate Juli 2024 >= 8.2.0
Ältere Version; nicht mehr unterstützt: 7.1 Mai 2024 8 Monate Januar 2025 >= 8.2.0
Ältere Version; nicht mehr unterstützt: 7.2 November 2024 8 Monate Juli 2025 >= 8.2.0
Aktuelle Version: 7.3 Mai 2025 8 Monate Januar 2026 >= 8.2.0
Aktuelle Version: 7.4 November 2025 3 Jahre November 2028 >= 8.2.0 LTS (Long Term Support) Version, Sicherheits-Updates bis November 2029
Aktuelle Version: 8.0<ref name="version-8-0" /> November 2025 8 Monate Juli 2026 >= 8.4.0
Zukünftige Version: 8.1<ref name="version-8-1" /> Mai 2026 8 Monate Januar 2027 >= 8.4.0 In Entwicklung, geplante Veröffentlichung Mai 2026
Legende:
Ältere Version; nicht mehr unterstützt
Ältere Version; noch unterstützt
Aktuelle Version
Aktuelle Vorabversion
Zukünftige Version

Aktuellere Informationen finden sich auf der Webseite symfony.com/releases.

Verwendung

  • Drupal ab Version 8<ref name="drupal-8" />
  • eZ Publish ab Version 5<ref name="ez-publish-5" />
  • Silex (Framework)<ref name="silex" />
  • phpBB ab Version 3.1<ref name="ascraeus" />
  • Contao ab Version 4<ref name="contao-4" />
  • Shopware ab Version 5<ref name="basecom" />
  • Akeneo ab Version 1<ref name="basecom" />
  • Magento ab Version 2.0<ref name="basecom" />
  • orocrm ab Version 1<ref name="orocrm" />
  • Pimcore ab Version 5<ref>SensioLabs: Pimcore (Projects using Symfony). Abgerufen am 24. Januar 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
  • Sylius ab Version 1<ref>Sylius: Built On The Shoulders Of Open Source Giants. Abgerufen am 2. Januar 2020 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
  • Zikula ab Version 1.3<ref name="zikula" />

Literatur

  • Francois Zaninotto, Fabien Potencier: The Definitive Guide to symfony. Apress, 2007, ISBN 1-59059-786-9, auch online verfügbar, englisch.
  • Timo Haberkern: Das Symfony Framework. entwickler.press, 2008, ISBN 3-939084-14-X.
  • Fabien Potencier: Practical symfony 1.2 for Doctrine. 2009, ISBN 978-2-918390-06-0, englisch.
  • Fabien Potencier: Practical symfony 1.2 for Propel. 2009, ISBN 978-2-918390-07-7, englisch.
  • Fabien Potencier: The symfony 1.2 Reference Guide. 2009, ISBN 978-2-918390-05-3, englisch.
  • Fabien Potencier, Hugo Hamon: Symfony, Mieux développer en PHP avec Symfony 1.2 et Doctrine. Eyrolles, 2009, ISBN 978-2-212-12494-1, französisch.
  • Tim Bowler, Wojciech Bancer: Symfony 1.3 Web Application Development. Packt Publishing Ltd., Birmingham 2009, ISBN 1-84719-456-7, S. 228, englisch.
  • Fabien Potencier: Symfony 5: The Fast Track. Symfony SAS, 2019, ISBN 978-2-918390-37-4, englisch.

Weblinks

Commons: Symfony – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

<references> <ref name="what_is_symfony"> Fabien Potencier: What is symfony2? Abgerufen am 5. Juni 2012. </ref> <ref name="1_3_1_4_diff">symfony-project.org: Symfony Versionen. Download and Install. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 18. Dezember 2010; abgerufen am 2. November 2011.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.symfony-project.org</ref> <ref name="version-change">symfony-project.org/blog: Why will Symfony 2.0 finally use PHP 5.3? Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 24. Februar 2011; abgerufen am 2. November 2011.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.symfony-project.org</ref> <ref name="composer"> getcomposer.org: Composer. Abgerufen am 24. Juli 2012. </ref> <ref name="ez-publish-5"> eZ Systems / Jérôme Vieilledent: eZ Publish 5 from a technical point of view. Abgerufen am 24. Juni 2013. </ref> <ref name="drupal-8"> Fabien Potencier: Symfony2 meets Drupal 8. Abgerufen am 28. August 2013. </ref> <ref name="silex">Fabien Potencier: Silex – The PHP micro-framework based on the Symfony2 Components. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 15. Februar 2014; abgerufen am 14. Februar 2014.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/silex.sensiolabs.org</ref> <ref name="ascraeus"> phpBB.com: phpBB 3.1 Ascraeus – Developers – Symfony Components. Abgerufen am 26. Oktober 2014. </ref> <ref name="version-2-8-lts"> symfony.com: The Release Process. Abgerufen am 2. Februar 2016. </ref> <ref name="version-3"> Fabien Potencier: Symfony 3.0: The roadmap. Abgerufen am 17. Oktober 2015. </ref> <ref name="version-3-1"> Fabien Potencier: Symfony 3.1.0 released. Abgerufen am 1. Juli 2016. </ref> <ref name="version-8-0"> Fabien Potencier: Symfony 8.0 released. Abgerufen am 26. Dezember 2025. </ref> <ref name="version-8-1"> Fabien Potencier: Symfony 8.1 under development. Abgerufen am 26. Dezember 2025. </ref> <ref name="contao-4"> Leo Feyer: Contao 4.0.0-beta1 verfügbar. Abgerufen am 25. November 2015. </ref> <ref name="basecom"> basecom.de: SensioLabs Partner. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 22. Februar 2016; abgerufen am 22. Februar 2016.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.basecom.de </ref> <ref name="orocrm"> OroCRM (Projects using Symfony). Abgerufen am 29. Mai 2016. </ref> <ref name="zikula"> Zikula Homepage. Abgerufen am 3. Februar 2020. </ref> </references>

Vorlage:Hinweisbaustein