„Symfony“ – Versionsunterschied

[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Link im Fließtext gelöscht
damit weiß man, dass es sich um die alte Symfony-Version handelt
Zeile 129:Zeile 129:
* [http://www.symfony-project.org/ Offizielle Website] (englisch)
* [http://www.symfony-project.org/ Offizielle Website] (englisch)
* [http://www.symfony-project.org/jobeet/1_2/Propel/en/ Tutorial Jobeet] Mittels 24 Kapitel Symfony 1.2 erlernen. (englisch)
* [http://www.symfony-project.org/jobeet/1_2/Propel/en/ Tutorial Jobeet] Mittels 24 Kapitel Symfony 1.2 erlernen. (englisch)
* [http://www.symfony-project.org/askeet/1_0/en/ Tutorial] über die Erstellung der Beispielanwendung [http://www.askeet.com/ askeet!] (englisch)
* [http://www.symfony-project.org/askeet/1_0/en/ Tutorial] über die Erstellung der Beispielanwendung [http://www.askeet.com/ askeet!] mit Symfony 1.0 (englisch)
* [http://trac.symfony-project.com/wiki/Documentation/de_DE Deutschsprachige Dokumentation]
* [http://trac.symfony-project.com/wiki/Documentation/de_DE Deutschsprachige Dokumentation]
* [http://www.symfony-project.org/book/forms/ Definitive guide to symfony forms] (englisch)
* [http://www.symfony-project.org/book/forms/ Definitive guide to symfony forms] (englisch)

Version vom 6. Mai 2009, 15:18 Uhr

Symfony

Basisdaten

EntwicklerSensioLabs
Erscheinungsjahr22. Oktober 2005
Aktuelle Version1.2.4
(4. Februar 2009)
Betriebssystemplattformunabhängig
Programmier­sprachePHP
KategorieWeb Application Framework
LizenzMIT-Lizenz
deutschsprachignein
symfony-project.org

symfony ist ein in PHP 5 geschriebenes quelloffenes Web-Framework. symfony ist angelehnt an Ruby on Rails und folgt ebenfalls dem Schema des Model View Controller (MVC).

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.

Beispiel:

  • Modell: User, Group (Singular)
  • Datenbanktabelle: users, groups, groups_users (Plural, 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 sprechende URLs
  • Templates 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

Schichten

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

Modell

Zur Speicherung der Objekte kommt Propel zum Einsatz. 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://beispiel.de/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

FarbeBedeutung
RedAlte Version; kein Support
YellowAlte Versionen; Support erhältlich
GreenAktuelle Version
BlueZukünftige Versionen
VersionErscheinungsdatumSupportPHP VersionEnd of maintenanceNotizen
1.0Januar 20073 Jahre>= 5.0Januar 2010
1.1Juni 20081 Jahr>= 5.1Juni 2009
1.2Dezember 20081 Jahr>= 5.2November 2009

Literatur