symfony

symfony
Symfony
Datei:Symfony.svg
Basisdaten
Aktuelle Version 2.0.4
(4. Oktober 2011)
Betriebssystem plattformunabhängig
Programmier­sprache 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 an Ruby on Rails angelehntes quelloffenes Web Application Framework und folgt ebenfalls dem Model View Controller-Schema (MVC).

Inhaltsverzeichnis

Geschichte

Symfony wird seit 2005 entwickelt. Es entstand parallel zur steigenden Popularität von Ruby on Rails und dem Wunsch nach einem ähnlichen MVC-Framework auf PHP-Basis.

Philosophie

Analog zu Ruby on Rails versucht man auch bei Symfony die Konfiguration auf das Minimum zu beschränken. Die Zuordnung von z. B. Modellen zu Datenbanktabellen geschieht über die Namensgleichheit in Singular und Plural, nicht über Konfigurationsdateien (Konvention vor Konfiguration).

Beispiel:

Modell
User, Group (Singular)
Datenbanktabelle
user, group, user_group (ausnahmsweise entgegen Ruby on Rails im Singular, letztes Beispiel zeigt den Namen für eine Relationstabelle für hasAndBelongsToMany. In diesem Fall werden die zu verknüpfenden Tabellen in alphabetischer Reihenfolge angegeben)
Fremdschlüssel in Datenbanktabellen
user_id, group_id (Singular plus "_id") Symfony erkennt z. B. Fremdschlüssel in Datenbanktabellen automatisch und erzeugt dementsprechend die korrekten Joins.

Merkmale

  • Konfiguration mit YAML
  • Datenbankzugriff über ORM-Layer
  • Scaffolding von CRUD-Interfaces
  • Request-Dispatcher für Clean URLs
  • Template Engine mit PHP-Syntax
  • Helper vereinfachen die Arbeit in den Templates (AJAX, JavaScript, Formulare uvm.)
  • Mehrsprachigkeit und I18N-Support
  • Formularüberprüfung
  • Filtern von über Formulare eingespeistem Schadcode
  • Komponenten für Session-Verwaltung, Request-Handling und Security
  • Ausgefeiltes Caching der Ausgabe
  • Pluginfähig

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. Propel ist ein nützliches Werkzeug für das Object-Relational Mapping (ORM), um PHP-Objekte in einer relationalen Datenbank speichern zu können. Propel wurde für PHP 5 entwickelt und ist eine Portierung des Apache-Torque-Projekt nach PHP.

Die Beziehungen zwischen verschiedenen Modellen werden über sogenannte Associations festgelegt. Dabei existieren folgende Möglichkeiten: hasOne, belongsTo, hasMany und hasAndBelongsToMany. Propel kann damit automatisch die benötigten Datenbankabfragen (inklusive eventuell benötigter Joins) generieren.

Das ORM-Framework Doctrine ist über das Plugin sfDoctrine ebenfalls verwendbar. Ab der Version 1.1 von Symfony wurde das bisherige Standardframework Propel ebenfalls in ein Plugin ausgelagert.

View

Unter einem View versteht man die Präsentationsschicht einer Applikation. In der View-Schicht werden über den Controller 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 können, z. B. Links, Formulare, JavaScript uvm. Für sich wiederholende Ausgaben kann man auf Partials zurückgreifen, welche man sich als Templates innerhalb von Templates vorstellen kann.

Controller

Der Controller enthält die sogenannte Business-Logic und bietet Schnittstellen, um mit dieser zu interagieren. Diese Schnittstellen werden analog zu Ruby on Rails 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. Man kann das Aussehen der URLs mit Hilfe von Routen sehr flexibel anpassen.

Ähnliche Projekte

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]

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)

Weblinks

Einzelnachweise

  1. symfony-project.org: Symfony Versionen. Download and Install. Abgerufen am 2. November 2011.
  2. symfony-project.org/blog: Why will Symfony 2.0 finally use PHP 5.3? Abgerufen am 2. November 2011.

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Symfony — Symfony …   Википедия

  • Symfony — Desarrollador Sensio Labs http://www.symfony project.org/ …   Wikipedia Español

  • Symfony — Basisdaten Aktuelle Version: 1.2.4 (4. Februar 2009) …   Deutsch Wikipedia

  • Symfony — Projet par défaut de Symfony …   Wikipédia en Français

  • Symfony — Infobox Software name = Symfony caption = Symfony default project author = developer = [http://www.sensio labs.com/ Sensio Labs] released = latest release version = 1.1.4 latest release date = October 3, 2008 latest preview version = latest… …   Wikipedia

  • Lime unit testing framework — Infobox Software name = lime caption = developer = latest release version = latest release date = operating system = Cross platform programming language = PHP genre = Test tool license = website = http://www.symfony project.org/lime is a unit… …   Wikipedia

  • Propel — est un ORM pour PHP 5. Le développement de Propel est accessible sur GitHub: https://github.com/propelorm/Propel. Licence : Jusqu à la version 1.4 : GNU GPL v3 ou suivantes À partir de la version 1.5 : Licence MIT Il est possible… …   Wikipédia en Français

  • Yii — Тип Программный каркас для создания веб приложений Разработчик Yii dev …   Википедия

  • Сравнение каркасов веб-приложений — Это сравнительная таблица фреймворков веб приложений. Содержание 1 Фреймворки 1.1 ASP.NET 1.2 C++ 1.3 ColdFusion Markup Language (CFML) …   Википедия

  • Apimo — Développeur Apiwork Environnement Multiplate forme …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”