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

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…