Anzeige
Anzeige
UX & Design

Webanwendungen mit dem PHP-Framework Symfony: Symfony

Frameworks sind aus der Entwicklung großer Webanwendungen kaum noch wegzudenken. Symfony ist zurecht eines der populärsten Frameworks für PHP und bietet eine Unmenge von Funktionen, die das Entwicklerleben leichter machen.

6 Min.
Artikel merken
Anzeige
Anzeige

Frameworks haben die Entwicklung großer Webanwendungen in den letzten Jahren geprägt. Zum Leidwesen der PHP-Entwickler meist auf anderen Plattformen. So existieren beispielsweise für Java bereits seit Jahren mächtige und ausgereifte Lösungen, welche die Implementierung vereinfachen und somit auch die Entwicklungszeit deutlich verkürzen. Seit die Objektorientierung mit dem Erscheinen der Version 5 in vollem Umfang Einzug in die Welt der PHP-Entwicklung gehalten hat, entstehen hier ebenfalls neue Frameworks beinahe im Wochenrhythmus.

Anzeige
Anzeige

Ein gutes Framework erleichtert die Arbeit des Entwicklers enorm, indem es ihm lästige und immer wiederkehrende Arbeiten abnimmt. Dazu stellt es gut aufeinander abgestimmte Klassen und Bibliotheken bereit, deren Funktionalität weit über das hinausgeht, was eine reguläre PHP-Installation bietet. Mit Symfony steht PHP-Entwicklern ein solches Framework zur Verfügung. Es ist ausgereift, leistungsfähig und bietet eine Unmenge an Helfern und Tools, die das Leben einfacher machen. Im Gegensatz zu vielen neuen und jungen Framework-Projekten kann Symfony aber bereits mit einer ausführlichen Dokumentation, vielen Beispielen und einer großen Nutzerbasis aufwarten, was den Einstieg einfacher gestaltet.

Model-View-Controller

Wie die meisten modernen Webframeworks arbeitet auch Symfony nach dem Model-View-Controller-Prinzip. Ziel dieses kurz MVC genannten Entwurfsmusters ist die strikte Trennung von Daten-, Anwendungs- und Anzeigelogik einer Anwendung. Alle Teile arbeiten weitgehend unabhängig voneinander und haben jeweils eine fest umrissene Aufgabe. Der Model-Part ist für das komplette Datenhandling und somit auch für die Zugriffe auf eine Datenbank verantwortlich. Für die Umsetzung der Daten in eine grafische Benutzeroberfläche ist der View zuständig.

Anzeige
Anzeige

Beide Anwendungsteile werden von einem Controller gesteuert. Er entscheidet, welche Daten des Models in welchem View angezeigt werden. Diese strikte Trennung hat den Vorteil, dass einzelne Programmteile einfacher ausgetauscht werden können. Sollen beispielsweise die Daten zukünftig nicht mehr in einer Datenbank, sondern in Dateien abgelegt werden, ist lediglich eine Änderung der Klassen im Model notwendig, die restlichen Applikationsteile sind nicht betroffen. Das MVC-Prinzip eignet sich somit hervorragend für den Einsatz in der Entwicklung grafischer Benutzeroberflächen.

Anzeige
Anzeige

Installation und Sandkasten

Symfony ist in verschiedenen Ausführungen auf der Projektseite [1] erhältlich. Neben der regulären Download-Version existiert noch eine so genannte Sandbox [2].
Diese enthält alles Notwendige, um sich einen schnellen Überblick über
Symfony zu verschaffen. Alle Komponenten sind bereits fix und fertig
vorkonfiguriert und ein leeres Projekt angelegt. Ein Entpacken der
Sandbox in ein Verzeichnis des Webservers ist alles, was zur
Installation notwendig ist.

Die Installation und Konfiguration der regulären Download-Version ist ein wenig aufwändiger und zeitintensiver – für Projekte, die über die ersten Schritte hinausgehen, aber der richtige Weg. Die Installation erfolgt über ein eigenes PEAR-Repository und läuft weitgehend automatisch ab. Lediglich die Konfiguration und Erstellung des Projekts mit dem Symfony-Generator erfordert etwas Arbeit. Grundvoraussetzung für eine erfolgreiche Symfony-Installation ist ein Server mit PHP 5 und eine korrekt arbeitende PEAR-Erweiterung. Die Tücken stecken allerdings im Detail. So gibt es mit der PHP-Version 5.1.2 des Öfteren Probleme, hier ist ein Update auf eine aktuellere Version angezeigt. Auch muss die PHP-Installation entsprechend konfiguriert werden. So müssen beispielsweise die Optionen „magic_quote_gpc“ und „register_globals“ in der php.ini auf „Off“ gestellt sein, damit das Framework seinen Dienst verrichtet. Bereits hieran lässt sich erkennen, dass sich Symfony auf einem Shared-Hosting-Server mitunter nur schwer in Betrieb nehmen lässt.

Anzeige
Anzeige

Gerüstbau und Rahmenwerk

Wie viele andere Frameworks orientiert sich auch Symfony an dem großen Vorbild Ruby on Rails (RoR). Einer der revolutionären Ansätze von RoR ist die Einführung eines zentralen Kommandozeilentools, das neben administrativen Aufgaben auch Quellcode erzeugen kann. Ähnlich wie RoR besitzt auch Symfony einen solchen Generator. Dieser ist somit Dreh- und Angelpunkt jeder Entwicklung mit Symfony und ungeheuer praktisch noch dazu. So können mit einzelnen Kommandos beispielsweise die Grundgerüste neuer Masken oder Datenbankzugriffsklassen erzeugt werden. Diese Art der Softwareentwicklung wird vielen zuerst sehr umständlich erscheinen, nach einer kurzen Eingewöhnungsphase möchte man dieses Tool aber nicht mehr missen.

Auch bei anderen Teilen von Symfony findet der Best-Practice-Ansatz Anwendung. So wird als Datenbankschnittstelle Propel [3] genutzt. Den meisten Webanwendungen liegt eine Datenbank zugrunde, in der alle zu verwaltenden Daten gespeichert werden. Der Einsatz von Propel für alle Datenbankzugriffe hat mehrere entscheidende Vorteile. So werden automatisch verschiedene Datenbanktypen unterstützt, ohne dass dazu der Quelltext umprogrammiert werden muss. Einige Änderungen an den Konfigurationsdateien genügen. Neben MySQL werden beispielsweise auch PostgreSQL, SQLite, Oracle und andere populäre Datenbankserver unterstützt. Neben der Datenbankabstraktion ist durch Propel auch ein objektorientierter Zugriff auf die relationalen Daten in der Datenbank möglich. Die Umsetzung von Objekten in relationale Daten erledigen die Propel-Klassen automatisch.

Damit jedoch nicht genug: Propel bietet ausgefeilte Klassen für nahezu alle Bereiche einer modernen Webanwendung. So darf neben Klassen zur Internationalisierung auch der Bereich Ajax nicht fehlen. Symfony ist hier sehr stark mit Scriptacolous bzw. Prototype verwoben und bietet dadurch bereits eine äußerst gute Basis zur Schaffung von Ajax-basierten Rich-Client-Anwendungen. Durch die Kapselung der Ajax-Funktionen in Symfony-Klassen und Helfer-Skripte lassen sich solche Anwendungen auch mit wenig Programmiererfahrung in JavaScript schnell und einfach bewältigen. Durch Plugins lässt sich Symfony auch um weitere Rich-Client-Frameworks wie Dojo oder YahooUI erweitern.

Anzeige
Anzeige

CRUD

CRUD ist ein Schlagwort, das im Zusammenhang mit Frameworks immer wieder fällt. CRUD steht für Create, Retrieve, Update und Delete. Diese vier Funktionen bilden in den meisten Fällen den Kern einer jeder Webanwendung. Gerade hier spielt Symfony eine seiner Stärken aus. Der Quelltext-Generator ist in der Lage, anhand einer Datenbankdefinition Masken für alle genannten Operationen zu generieren. Das Ausführen des folgenden Kommandos führt so zu einem kompletten Modul einer durch eine Datenbanktabelle definierten Klasse.

CRUD
symfony propel-generate-crud frontend Task Task

Listing 1

Der Aufruf bewirkt die Erstellung aller notwendigen Controller-, View- und Modelklassen anhand der vorgegebenen Tabellenbeschreibung im Propel-XML-Schema. Das so erzeugte Modul ist bereits voll funktionsfähig, das heißt es unterstützt die vier genannten Operationen. Wer möchte, kann es selbstverständlich noch nach Belieben an eigene Bedürfnisse anpassen.

Layout mit fleißigen Helfern

Wie bereits eingangs erwähnt, 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 bestehen. So lassen sich Elemente, die auf allen Seiten vorkommen, in einem einzigen Template zusammenfassen.

Anzeige
Anzeige

Damit der Quellcode der einzelnen Views übersichtlich und sauber bleibt, bietet Symfony eine Reihe so genannter Helfer-Skripte. Diese Skripte erzeugen teilweise sehr komplexen und aufwändigen HTML-Quellcode durch den Aufruf einer einzigen Funktion. Symfony bietet eine Menge solcher Skripte, die sich auch nach Belieben erweitern oder durch online verfügbare Bibliotheken ergänzen lassen. Standardmäßig sind Helfer für die Erzeugung von Formularen, Links, JavaScript-Quellcode oder Ajax-Konstrukten und vieles andere mehr enthalten. Das nachfolgende Beispiel zeigt den Einsatz zweier Helfer-Skripte zur Datumsformatierung und Linkerzeugung innerhalb eines Templates.

PHP
<?php use_helper('Date');?>
Datum: <?php echo format_date($date, 'd', 'de');?><br/>
<?php echo link_to('Task bearbeiten', 'Task/edit?id=1');?>

Listing 2

Fazit

Mit Symfony steht ein Framework für PHP zur Verfügung, das den Vergleich mit der Konkurrenz nicht scheuen muss. Die Entwicklung der Version 1.0 ist weitgehend abgeschlossen. Das Framework hat sich aber bereits seit langem im produktiven Einsatz bei unzähligen Projekten bewährt und kann bedenkenlos eingesetzt werden. Neben der Vielzahl an Funktionen und der durchdachten und performanten Struktur sind weitere Pluspunkte die große und hilfsbereite Community und die umfangreiche Dokumentation und Beispielsammlung, die online verfügbar ist.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Kommentare

Community-Richtlinien

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Kommentar abgeben

Melde dich an, um Kommentare schreiben und mit anderen Leser:innen und unseren Autor:innen diskutieren zu können.

Anmelden und kommentieren

Du hast noch keinen t3n-Account? Hier registrieren

Anzeige
Anzeige