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. 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 Januar 2007 3 Jahre Januar 2010 >= 5.0 Juni 2008 1 Jahr Juni 2009 >= 5.1 Sicherheitsrelevante Updates bis Juni 2010 Dezember 2008 15 Monate Februar 2010 >= 5.2 November 2009 1 Jahr November 2010 >= 5.2 Wie 1.4, jedoch mit Kompatibilitäts-Ebene für bestehende Symfony-Projekte November 2009 3 Jahre November 2012 >= 5.2 Juli 2011 20 Monate März 2013 >= 5.3.2 Umstieg auf PHP 5.3 September 2012 9 Monate Mai 2013 >= 5.3.3 Überarbeitete Form-Komponente, Einsatz von Composer März 2013 8 Monate November 2013 >= 5.3.3 Überarbeitete Form-Komponente, Einsatz von Composer Mai 2013 3 Jahre Mai 2016 >= 5.3.3 Erste LTS (Long Term Support) Version November 2013 8 Monate Juli 2014 >= 5.3.3 Mai 2014 8 Monate Januar 2015 >= 5.3.3 November 2014 8 Monate Juli 2015 >= 5.3.3 Mai 2015 3 Jahre Mai 2018 >= 5.3.9 Zweite LTS (Long Term Support) Version November 2015 3 Jahre November 2018 >= 5.3.9 LTS (Long Term Support) Version November 2015 8 Monate Juli 2016 >= 5.5 Mai 2016 8 Monate Januar 2017 >= 5.5 PSR-6 kompatible Cache-Komponente, LDAP Unterstützung November 2016 8 Monate Juli 2017 >= 5.5.9 März 20178 MonateJanuar 2018>= 5.5.9 November 20173 JahreNovember 2020>= 5.5.9LTS (Long Term Support) Version November 20178 MonateJuli 2018>= 7.1.3 Mai 20188 MonateJanuar 2019>= 7.1.3 November 20188 MonateJuli 2019>= 7.1.3Nur noch Sicherheits-Updates bis Januar 2020 Mai 20198 MonateJanuar 2020>= 7.1.3Sicherheits-Updates bis Juli 2020 November 20193 JahreNovember 2022>= 7.1.3LTS (Long Term Support) Version, Sicherheits-Updates bis November 2022 November 20198 MonateJuli 2020>= 7.2.5 Mai 20208 MonateJanuar 2021>= 7.2.5 November 20208 MonateJuli 2021>= 7.2.5 Mai 20218 MonateJanuar 2022>= 7.2.5 November 20213 JahreNovember 2024>= 7.2.5LTS (Long Term Support) Version, Sicherheits-Updates bis Februar 2029 November 202114 MonateJanuar 2023>= 8.0.2 Mai 20228 MonateJanuar 2023>= 8.1.0 November 20228 MonateJuli 2023>= 8.1.0 Mai 20238 MonateJanuar 2024>= 8.1.0 November 20233 JahreNovember 2026>= 8.1.0LTS (Long Term Support) Version, Sicherheits-Updates bis November 2027 November 20238 MonateJuli 2024>= 8.2.0 Mai 20248 MonateJanuar 2025>= 8.2.0 November 20248 MonateJuli 2025>= 8.2.0 Mai 20258 MonateJanuar 2026>= 8.2.0November 20253 JahreNovember 2028>= 8.2.0LTS (Long Term Support) Version, Sicherheits-Updates bis November 2029November 20258 MonateJuli 2026>= 8.4.0Mai 20268 MonateJanuar 2027>= 8.4.0In Entwicklung, geplante Veröffentlichung Mai 2026 Aktuellere Informationen finden sich auf der Webseite symfony.com/releases.

Verwendung Drupal ab Version 8 eZ Publish ab Version 5 Silex (Framework) phpBB ab Version 3.1 Contao ab Version 4 Shopware ab Version 5 Akeneo ab Version 1 Magento ab Version 2.0 orocrm ab Version 1 Pimcore ab Version 5 Sylius ab Version 1 Zikula ab Version 1.3

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

Offizielle Website Symfony (englisch) Symfony Releases

Einzelnachweise

Kategorie:Freies PHP-Webframework