Zum Inhalt springen
Der Guide für ein smartes Leben.
VG Wort Pixel
Up to date

Serie: PHP-Framework Symfony - Teil 1

Mit dem PHP-Framework Symfony und JavaScript- Bibliotheken wie jQuery lassen sich in kurzer Zeit beindruckende Ergebnisse erzielen. Im ersten Teil unserer fünfteiligen Serie wollen wir den Grundstein für einen Webkalender legen. Auf diesem Grundgerüst wird dann in den kommenden Ausgaben aufgebaut.

Autoren: Timo Haberkern und Daniela Schrank • 19.2.2011 • ca. 4:25 Min

internet, webdesign, php, framework, php-framework, symfony, javascript, jquery, webkalender
internet, webdesign, php, framework, php-framework, symfony, javascript, jquery, webkalender
© Timo Haberkern, Daniela Schrank
Inhalt
  1. Serie: PHP-Framework Symfony - Teil 1
  2. Layout

Die Verwendung von Frameworks für die Entwicklung von Webanwendungen mit PHP ist heute gang und gäbe. Je nach eigenen Vorlieben kommt dabei eines der vielen frei verfügbaren Frameworks zum Einsatz. Eines der populärsten und ausgereiftesten ist Symfony (www.symfony-project.org ), das aktuell in d...

Die Verwendung von Frameworks für die Entwicklung von Webanwendungen mit PHP ist heute gang und gäbe. Je nach eigenen Vorlieben kommt dabei eines der vielen frei verfügbaren Frameworks zum Einsatz. Eines der populärsten und ausgereiftesten ist Symfony (www.symfony-project.org ), das aktuell in der Version 1.4 zur Verfügung steht und auch die Grundlage für die Umsetzung unserer Beispielanwendung bildet.Neben Symfony werden wir auch noch jQuery (www.jquery.com ) für verschiedene Spielereien der Benutzeroberfläche und der Darstellung des Kalenders einsetzen. Zur Vereinfachung der Arbeit mit CSS nutzen wir zudem noch das CSS-Framework Yaml (www.yaml.de ).

Das Ziel

Im Rahmen dieser und der folgenden vier Ausgaben werden wir eine Kalenderanwendung schreiben. Die Funktionalität beschränkt sich dabei auf diese Features:

  • Anzeige eines Kalenders, wahlweise in einer Wochen- oder Monatsansicht
  • Blättern zwischen Wochen und Monaten
  • Erstellen und Bearbeiten von Kalendereinträgen
  • Löschen von Kalendereinträgen
  • Anzeige von Eintragsdetails
  • E-Mail-Versand für Erinnerungsmails
Für die einzelnen Funktionen werden verschiedene Features von Symfony-Frameworks zum Einsatz kommen, um Ihnen einen möglichst breitgefächerten Überblick über das Framework zu verschaffen. Da wir in einem Artikel aus Platzgründen nicht den gesamten Quellcode abdrucken können, der für die Anwendung notwendig ist, steht Ihnen das gesamte Projekt auch unter github.com/thaberkern/imag_symfony_calendar zur Verfügung. Das Projekt wird dort für jede Ausgabe um die entsprechenden Features erweitert.

Framework-Installation

internet, webdesign, php, framework, php-framework, symfony, javascript, jquery, webkalender
Ein neu angelegtes Modul meldet sich beim Aufruf im Browser mit einer Symfony-Standardseite.
© Timo Haberkern, Daniela Schrank

Um mit Symfony zu arbeiten, muss das Framework installiert werden. Die einfachste Art ist die Nutzung des Pear-Installers. Wenn Sie ein Webserver-Paket wie Xampp nutzen, ist dieser bereits fertig nutzbar installiert und Sie können direkt loslegen. Das Ausführen der folgenden beiden Kommandos in einem Windows-Konsolenfenster installiert Symfony automatisch systemweit:

$> pear channel-discover pear.
symfony-project.com
$> pear install symphony/symfony

Sofern die Installation korrekt ausgeführt wurde, steht nun das Symfony-Kommandozeilen- Tool in der Konsole zur Verfügung. Sie können dies ganz einfach testen, indem Sie folgenden Befehl ausführen:

$> symfony -V

Als Resultat sollte die aktuell installierte Symfony-Version ausgegeben werden. Sollte es bei Ihnen Schwierigkeiten mit der Installation geben, weil beispielsweise das Pear-Kommando nicht korrekt installiert ist, so können Sie sich auch das Grundgerüst von der oben genannten Projektseite bei Github herunterladen. In diesem Paket ist auch bereits Symfony enthalten, sodass Sie auf eine Pear-Installation verzichten können.

Grundgerüst

Vorteil bei der Entwicklung mit dem Symfony- Framework ist, dass es viele Vorgänge bereits automatisiert, die normalerweise innerhalb einer Entwicklungsumgebung stattfinden. Dazu stellt Symfony ein Tool zur Verfügung, das in der Windows-Konsole verwendet wird. Sie werden sich während der Entwicklung einer Symfony-Anwendung also recht häufig in einem Konsolenfenster wiederfinden, um die verschiedensten Operationen auszuführen.Auch die ersten Schritte zur Erstellung einer Anwendung finden auf Kommandozeilenebene statt. Zuerst benötigen Sie allerdings ein Verzeichnis, das per Browser erreichbar ist. Bei einer Apache-Installation ist dies beispielsweise das htdocs-Verzeichnis. Legen Sie sich hierunter ein neues Verzeichnis für unser Projekt an (beispielsweise sfcalendar). Öffnen Sie ein Konsolenfenster, navigieren Sie dort zum gerade angelegten Verzeichnis und führen die folgenden Befehle aus:

$> symfony generate:project Calendar
$> symfony generate:app frontend
$> symfony generate:app backend

Jeder dieser Befehle hat zur Folge, dass eine Menge von Verzeichnissen und Dateien angelegt werden. Durch das Ausführen der Befehle haben wir nun das komplette Grundgerüst eines Symfony-Projektes inklusive zweier unterschiedlicher Anwendungen, die sich eine Projektumgebung teilen.Die frontend genannte Anwendung wird im späteren Verlauf für die Darstellung des Kalenders für den Besucher der Seite zuständig sein. Das backend dient zur Verwaltung des Kalenders. Dank des Kommandozeilentools müssen wir uns um das lästige Anlegen der Verzeichnisstrukturen und Konfigurationsdateien nicht selbst kümmern.

Module und Aktionen

Symfony ist ein sogenanntes Model-View-Controller-Framework, in dem die einzelnen Quellcode-Teile entsprechend ihrer Aufgaben getrennt werden. Dabei unterscheidet man die folgenden Bereiche:

  • Model: Im Model-Bereich sind alle Anwendungsteile zusammengefasst, die für die Verwaltung der Daten in einer Datenbank oder einer Datei verantwortlich sind.
  • View: Alles was mit der Ausgabe und Aufbereitung von Daten als HTML, Json oder XML zu tun hat, ist hier untergebracht.
  • Controller: Dieser Bereich wird auch als Steuerungslogik bezeichnet. Der Aufruf einer URL der Anwendung führt dazu, dass ein entsprechender Controller gestartet wird, der dann die weiteren Schritte einleitet. Controller steuert die Model- und View-Schicht.
Dank dieser Aufteilung ist ein solches Projekt einfacher zu entwickeln und zu warten.

Symfony bietet zudem für jeden der Bereiche eigene Klassen und Helfer, die das Schreiben der Anwendung deutlich erleichtern. Ein Symfony-Projekt ist neben den bereits erwähnten Anwendungen, in einzelne Module aufgeteilt.In unserem Fall besteht die Anwendung Frontend nur aus einem einzelnen Modul mit dem Namen calendar. Dieses Modul wird wieder über das bereits verwendete Symfony-Kommandozeilen- Tool erstellt. Dazu wird der folgende Befehl ausgeführt:

$> php symfony generate:module
frontend calendar

internet, webdesign, php, framework, php-framework, symfony, javascript, jquery, webkalender
Bei der View-Schicht von Symfony werden gemeinsame Seitenbestandteile in ein Layout ausgelagert.
© Timo Haberkern, Daniela Schrank

Anhand der Ausgaben des Befehls können Sie erkennen, dass Symfony wieder eine Reihe von Verzeichnissen und Dateien angelegt hat. Diese befinden sich ausschließlich im Verzeichnis apps/frontend/calendar. Eine umfangreichere Symfony- Anwendung besteht natürlich aus mehreren Modulen. Unser Modul calendar wird ausschließlich für die Darstellung und Verwaltung des Kalenders zuständig sein und kann bereits jetzt aufgerufen werden.Steuern Sie mit dem Browser Ihrer Wahl unser angelegtes Verzeichnis an (beispielsweise mit https://localhost/sfcalendar/calendar/index ) und Sie werden von einer Symfony- Standardwebseite begrüßt, die Sie auch in einer der Abbildungen dieses Artikels sehen können.

Templates

Bislang haben wir keine einzige Zeile Quellcode geschrieben, was wir aber nun nachholen werden. Als Erstes wollen wir uns eine Action anlegen, die für die Anzeige des Kalenders verantwortlich ist. Dazu fügen wir in die Datei apps/frontend/modules/calendar/actions/action.class.php den folgenden Quellcode ein:

class calendarActions extends
sfActions {
public function executeShow
(sfWebRequest $request) {
return sfView::SUCCESS;
}
...
}

Diese Funktion ist ein Controller, im Symfony- Sprachgebrauch Action genannt. Per Default besitzt Symfony Regeln, die eine direkte Zuordnung zwischen URL und Action ermöglichen. Der Aufruf der URL https://localhost/sfcalendar/calendar/show ist für Symfony die Aufforderung die Action show (die Funktion executeShow) des Moduls calendar auszuführen. Dies ist ein Beispiel, wie bei Symfony Dinge per Namenskonventionen zusammenspielen und Sie außer der richtigen Benennung nichts weiter tun müssen.