Code-Symfony

Teil 2: Serie: PHP-Frameworks Teil 2 - Symfony im Detail

Der große Vorteil an diesem Vorgehen ist die Stabilität des Gesamtsystems. Bereits in den ersten Versionen des Frameworks stand dadurch eine robuste Plattform für die Entwicklung von PHP-Anwendungen zur Verfügung.

Model

Der Zugriff auf Daten einer Datenbank ist für aktuelle Anwendungen ein sehr wichtiger Part der täglichen Entwicklerarbeit. Die Möglichkeiten von Symfony auf diesem Gebiet sind eine der Hauptstärken des Frameworks. Bereits seit den ersten frei verfügbaren Versionen ist ein Framework für objektrelationales Mapping mit an Bord.Wie bereits erwähnt, ist auch der Datenbank- Layer von Symfony keine reine Eigenentwicklung, sondern basiert teilweise auf anderen, frei verfügbaren Open-Source-Lösungen. Symfony kapselt diese in einfach zu nutzende Klassen und integriert diese nahtlos in das Framework.Die ersten Versionen von Symfony basierten noch ausschließlich auf dem ORM-Framework Propel. Mit der Version 1.2 hat zudem Doctrine als Datenbankschicht Einzug gehalten, die zuvor nur als Plugin nachrüstbar war. Bereits Propel stellt ein sehr mächtiges Werkzeug zum objektorientierten Zugriff auf Datenbanken dar.

PHP-Frameworks Teil II - Symfony

© Archiv

Generatoren erleichtern das Entwicklerleben durch die automatisierte Erstellung von Quellcode.

Doctrine legt hier aber nochmals eine Schippe drauf. Der Leistungsumfang, die Flexibilität und die Zugriffsmöglichkeiten auf Datenbestände ist enorm. Dennoch ist die Geschwindigkeit beachtlich. Welches Datenbank-Framework zum Einsatz kommt, kann jeder selbst entscheiden. Unabhängig von der Wahl der Datenbankschicht verläuft die anschließende Arbeit auf ähnliche Art und Weise.

Die Grundlage ist immer die Beschreibung des Datenbank-Schemas, die in einer Text-Datei im YAML-Format erfolgt. Das folgende Listing zeigt ein Beispiel für die Beschreibung zweier Klassen in der Doctrine-Notation, die durch eine 1:n-Beziehung miteinander verbunden sind.

Author:
columns:
id: { type: integer, primary:
true, autoincrement: true }
contact_id: { type: integer(4) }
first_name: { type: string(255) }
last_name: { type: string(255) }
Book:
columns:
id: { type: integer, primary: true, autoincrement: true }
name: { type: string(255) }
user_id: { type: integer(4) }
relations:
Author:
foreignAlias: Books

So werden alle speicherbaren Objekte definiert. Das gezeigte Beispiel enthält die beiden Objekte/Tabellen Author und Book, mit der Beschreibung der zugeordneten Eigenschaften. Für jede Eigenschaft werden verschiedene Attribute in geschweiften Klammern gesetzt, im Beispiel hauptsächlich Typ und Länge der Tabellenfelder.

In der Praxis sind hier deutlich mehr Attribute üblich, so sind auch Indizes, Constraints, Standardwerte und Weiteres über die Definitionen beschreibbar. Je nach Datenbank-Framework werden unterschiedliche Funktionen unterstützt. Doctrine bietet hier bereits out-of-the-box ausgefeilte Erweiterungen, die vieles automatisieren.

So sind die Verwaltung von Baumstrukturen oder die Versionierung von Daten in der Datenbank bereits in Doctrine integriert. Die Definition der Datenbankstruktur ist allerdings nur der erste Schritt, viel interessanter ist, was sich aus diesem Schema so alles erzeugen lässt.

Der Aufruf eines Kommandozeilenbefehls genügt, um beispielsweise komplette Datenbankzugriffsklassen für jede Datenbanktabelle zu generieren.

$> symfony doctrine:build-model fron
tend

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".