Code-Symfony

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

22.7.2009 von Redaktion pcmagazin und Timo Haberkern

ca. 1:55 Min
Ratgeber
  1. Serie: PHP-Frameworks Teil 2 - Symfony im Detail
  2. Teil 2: Serie: PHP-Frameworks Teil 2 - Symfony im Detail
  3. Teil 3: Serie: PHP-Frameworks Teil 2 - Symfony im Detail
  4. Teil 4: Serie: PHP-Frameworks Teil 2 - Symfony im Detail
  5. Teil 5: 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
Generatoren erleichtern das Entwicklerleben durch die automatisierte Erstellung von Quellcode.
© Archiv

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 lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

internet, webdesign, adobe,  Illustrator, CS6

Webdesign

Webdesign in Adobe Illustrator CS6

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.

Facebook stellte die neue Suche

Facebook

Facebooks Social Graph Search

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?

Der BGH erklärt das Internet zur Lebensgrundlage.

Online-Recht

Darauf müssen Sie bei den AGB achten

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.

Online-Urheberrecht: Unser Ratgeber bietet Tipps für das Cloud-Recht.

Online-Recht in der Cloud

Wie sieht das Urheberrecht in der Wolke aus?

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…

Logistik im E-Commerce: Prozesse rund um die Logistik.

E-Commerce-Logistik

Logistik im E-Commerce

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.