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 lesen

Chronologische Liste und Netflix-Links -

Neuerscheinungen in der Übersicht -

Vorschau auf Film- und Serien-Highlights -

Mehr zum Thema

Webdesign

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

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

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.
Online-Recht in der Cloud

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

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