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

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden Ergebnissen…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste einspannen.…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…