Symfony2 – das ultimative Beginner-Tutorial
Voller Freude darf ich euch heute Symfony2 vorstellen, ein PHP Framework, das wir hier bei MASSIVE ART gerne einsetzen.
Ich würde sagen, wir beginnen nun mit ein paar knackigen Grundlagen und machen uns dann ans Eingemachte. Ach ja, und bitte verzeiht mir, dass ich Symfony2 in weiterer Folge frech mit Symfony abkürzen werde.
1. Was ist Symfony?
Symfony ist ein quelloffenes PHP Framework und seit 2011 in der Version 2 erhältlich. Es folgt dem Model-View-Controller Pattern (MVC). Das heißt, es sieht eine Trennung von Datenbank, Präsentation und Programmsteuerung vor. Symfony bietet viele – nämlich über dreißig – Komponenten, die mir als Programmierer den Alltag erleichtern. Und da ist es auch schon gefallen, dass Schlüsselwort: Komponenten – oder Bundles, um es im Symfony-Fachjargon zu sagen. Denn Symfony ist hoch modular aufgebaut. Jeder Komponent ist für sich komplett lauffähig und kann trotzdem mittels Dependency Injection und Events einfach in den Systemprozess integriert werden. Die Vorteile liegen also auf der Hand:
- Flexibel: Ein Komponent kann einfach erweitert oder gegen einen anderen ausgetauscht werden
- Wiederverwendbar – auch in anderen Projekten
- Jeder Komponent kann für sich getestet werden
- Fehler in einem Komponent wirken sich nicht auf andere Komponenten aus
2. Und was kann Symfony sonst noch alles?
Nun ja, doch Einiges. Fangen wir mal bei der Konfiguration an: Symfony verfolgt das Konvention vor Konfiguration Pattern, also möglichst wenig konfigurieren zu müssen. Mein Sitznachbar würde mir in diesem Punkt zwar vehement widersprechen, aber wenn man nicht gerade ständig vom Standardfall abweicht, dann hält sich die Konfiguration in Symfony doch in Grenzen. Konfigurieren lässt sich übrigens wahlweise in XML, YAML, Annotations oder direkt in PHP.
Ein weiteres mächtiges Feature ist die Konsolenanwendung. Damit können Command-Line Kommandos ausgeführt, aber auch eigene Kommandos erstellt werden. Sie ermöglicht unter anderem ein einfaches Scaffolding oder Datenbank-Updates. Die Entwickler hinter Symfony haben zudem verstanden, dass das Rad nicht immer neu erfunden werden muss. So kann beispielsweise Doctrine2 oder Propel als ORM Schicht für Datenbankzugriffe verwendet werden.
Anders sieht es im Bereich Templating aus. Hier wurde mit Twig ein eigener, sehr umfangreicher Standard geschaffen – welcher sich auch in anderen Frameworks bereits großer Beliebtheit erfreut. Wer damit aber nicht glücklich wird, kann einfach PHP zur Ausgabe verwenden.
Ein weiteres, nennenswertes Feature ist der Symfony Profiler – inklusive Debug Toolbar. Wie ich finde ist dieser besonders beim Debuggen und Optimieren einer Webapplikation eine große Hilfe. Da ich aber nicht zu sehr ins Detail gehen möchte, gibt es hier noch ein paar Features in aller Kürze:
- Mehrsprachigkeit und i18n Unterstützung
- einfacher E-Mail-Versand mit dem Swifmailer
- dynamisches Routing mit sauberen URLs
- “Forms” Komponente für Formularerzeugung sowie -Validierung
- Session-Handling und Security
- umfangreiches Caching
-
und so weiter und so fort
3. Und warum soll ich das Framework nun verwenden?
Für alle, die an dieser Stelle noch immer nicht überzeugt wurden, habe ich jetzt ein Ass im Ärmel: Symfony wird nicht nur von uns sondern auch anderen richtig großen Firmen verwendet – sowie auch einige populäre Frameworks. Drupal, Laravel, phpBB oder auch Sulu setzen ebenfalls auf das Symfony2.
Auf was ich hinaus möchte? Hinter Symfony steckt eine große und aktive Community. Hier wird einander nicht nur geholfen, sondern es gehört zum guten Ton Erweiterungen zu entwickeln und zu teilen. So lassen sich bereits für fast alle erdenklichen Anwendungsfälle passende (Bundle-)Erweiterungen finden. Sollte man einmal nicht weiterkommen, so findet man in der Regel in der ausführlichen Dokumentation Rat – oder eben in der Community.
Genug Theorie, auf zur Praxis! Und die folgt in Kürze hier auf unserem Blog: Symfony2 – das ultimative Newsletter-Tutorial. Dann werde ich euch Schritt für Schritt zeigen, wie man mit Symfony einen Newsletter erstellt.