symfony
| Symfony | |
|---|---|
| Basisdaten | |
| Aktuelle Version | 2.0.10 (6. Februar 2012) |
| Betriebssystem | plattformunabhängig |
| Programmiersprache | PHP |
| Kategorie | Web Application Framework |
| Lizenz | MIT-Lizenz |
| Deutschsprachig | Nein |
| symfony-project.org (v. 1.4) symfony.com (v 2.x) |
|
Symfony ist ein in PHP 5 geschriebenes quelloffenes Web Application Framework und folgt ebenfalls dem Model View Controller-Schema (MVC).
Inhaltsverzeichnis |
[Bearbeiten] 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. Die Zuordnung von z. B. Models zu Datenbanktabellen geschieht über die Namensgleichheit in Singular und Plural, nicht über Konfigurationsdateien (Konvention vor Konfiguration).
Version 2 ist im Juli 2011 erschienen. Das Framework besteht nunmehr aus Modulen, sogenannten Bundles, welche voneinander vollkommen unabhängig lauffähig sind, aber nahtlos in den Framework-Prozess integriert werden können. Außerdem werden Namespaces unterstützt. Somit erfordert Symfony2 PHP 5.3 oder höher.
[Bearbeiten] Bundles
Bundles sind voneinander gelöste Einheiten einer Webapplikation. Ein Gästebuch-Bundle enthält demnach alle Daten, die zur vollständigen Lauffähigkeit des Gästebuchs dienen. Dazu gehören nicht nur die erforderlichen Klassen, sondern auch Ressourcen (Grafiken, Scripts etc.). Entwickler können entwickelte Bundles veröffentlichen, so dass andere Nutzer von Symfony2 diese Applikationseinheit ohne Codeänderungen implementieren können.
[Bearbeiten] Merkmale
- Konfiguration mit YAML
- 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
[Bearbeiten] Schichten
Das Entwurfsmuster Model-View-Controller wird von Symfony wie folgt umgesetzt:
[Bearbeiten] Modell
Zur Speicherung der Objekte kommen zwei Plugins zur Auswahl (Doctrine und Propel) mit. Dabei handelt es sich um OR-Mapper, um PHP-Objekte in einer Datenbank speichern zu können.
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.
[Bearbeiten] 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.
[Bearbeiten] Controller
Der Controller formuliert die Business-Logic und bietet Schnittstellen, um mit dieser zu interagieren. Diese Schnittstellen werden wie in vielen anderen Frameworks auch Actions genannt. Ein Request (z. B. http://example.com/controller/action) enthält den Namen des Controllers und die auszuführende Methode. Es können auch Parameter für die Methode übergeben werden. Der Entwickler kann die Struktur der URLs mit Hilfe von Routen sehr flexibel anpassen.
[Bearbeiten] Ähnliche Projekte
[Bearbeiten] Versionen
| Farbe | Bedeutung |
|---|---|
| Rot | Alte Version; kein Support |
| Gelb | Alte Versionen; Support erhältlich |
| Grün | Aktuelle Version |
| Blau | Zukünftige Versionen |
| Version | Erscheinungsdatum | Support | Support bis | PHP Version | Bemerkungen |
|---|---|---|---|---|---|
| 1.0 | Januar 2007 | 3 Jahre | Januar 2010 | >= 5.0 | |
| 1.1 | Juni 2008 | 1 Jahr | Juni 2009 | >= 5.1 | Sicherheitsrelevante Updates bis Juni 2010 |
| 1.2 | Dezember 2008 | 15 Monate | Februar 2010 | >= 5.2 | |
| 1.3 | November 2009 | 1 Jahr | November 2010 | >= 5.2 | Wie 1.4, jedoch mit Kompatibilitäts-Ebene, für bestehende Symfony Projekte [1] |
| 1.4 | November 2009 | 3 Jahre | November 2012 | >= 5.2 | |
| 2.0 | Juli 2011 | noch unklar | noch unklar | >= 5.3 | Umstieg auf PHP 5.3 [2] |
[Bearbeiten] 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, deutsch
- 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. 1. Auflage. Packt Publishing Ltd., Birmingham 24. September 2009, ISBN 1-8471-9456-7, S. 228. (Englisch)
[Bearbeiten] Weblinks
- Offizielle Website Symfony 1 (englisch)
- Offizielle Website Symfony 2 (englisch)
- symfony Day - die symfony Konferenz in Deutschland
[Bearbeiten] Einzelnachweise
- ↑ symfony-project.org: Symfony Versionen. Download and Install. Abgerufen am 2. November 2011.
- ↑ symfony-project.org/blog: Why will Symfony 2.0 finally use PHP 5.3? Abgerufen am 2. November 2011.