Code-Symfony

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

Das Ergebnis sind eine Reihe von Klassen für jede Datenbanktabelle. Diese Klassen sind für den eigentlichen Zugriff auf die Datenbank erforderlich.

Für alltägliche Operationen sind keine SQL-Befehle mehr notwendig. Das nächste Beispiel zeigt das Anlegen eines neuen Artikels und das darauf folgende Speichern in der Datenbank. Der Primärschlüssel, in diesem Fall ist dies das Feld id, wird dabei nach dem Speichern automatisch mit dem entsprechenden Schlüsselwert aus der Datenbank gefüllt.

<?php
$value = new Article();
$value->name = 'V21A Kollektor';
$value->article_number = '164304';
$value->save();
echo 'ID='.$value->id;
?>

Ähnlich einfach ist das Lesen von Daten mit einem bekannten Schlüsselfeld. Das geladene Objekt kann anschließend verändert, gespeichert oder auch gelöscht werden.

<?php
// Lesen von Werten
$value = Doctrine::getTable
('Article')->find($id);
// Verändern
$value->name = 'Geänderter Wert';
$value->save();
// Löschen
$value->delete();
?>

Diese Art des Datenbankzugriffs ist für einfache Zugriffe ausreichend, etwa für Operationen auf einem Datensatz von dem der Primärschlüssel bekannt ist. Für komplexere Dinge bieten die beiden Zugriffslayer Propel und Doctrine eigene objektorientierte Abfragesprachen an.

Die Doctrine Query Language (DQL) ist hierbei besonders effektiv und elegant. Wie im folgenden Beispiel zu sehen, orientiert sich die Abfragesprache an SQL und ist daher für erfahrene Entwickler schnell und einfach erlernbar.

<?php
// Einfacher lesender Zugriff
$query = new Doctrine_Query();
$query->from('Author a')->where("a.
LastName = 'Haberkern'");
$result = $query->execute();
// Lesender Zugriff mit Joins
$query->from('Author a')
->leftJoin('a.Books b')
->innerJoin('a.Publisher p WITH
a.id > 3')
$users = $query->execute();
?>

Propel geht hier einen etwas anderen Weg, der nicht ganz so eingänglich, aber nicht minder leistungsfähig ist.

View

Die View-Schicht ist, wie eingangs erwähnt, das Bindeglied zwischen der Anwendungs- und Datenbanklogik und dem Benutzer. Dieser Schicht werden alle Bestandteile zugeordnet, die zur Erstellung und Anzeige von HTML-Seiten notwendig sind. Des Weiteren werden bei der Entwicklung mit Symfony Inhalt und Gestaltung klar voneinander getrennt.

Die View-Klassen sind für die Ausgabe der Daten als HTML-Seite verantwortlich und nutzen Templates zur Ausgabe. Dadurch lässt sich das Design einer Anwendung zu einem späteren Zeitpunkt sehr einfach verändern.

Jede Seite kann dabei aus mehreren Templates (sogenannten Partials) bestehen. So lassen sich Elemente, die auf allen Seiten vorkommen, in einem Partial zusammenfassen. Dadurch wird redundanter Quellcode vermieden. Die Template-Ausgaben einer Operation werden zudem in ein übergeordnetes Layout der Anwendung eingebettet.

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​".