Symfony: Erste Erfahrungen

Ich habe etwa vor Weihnachten begonnen mich mal wieder etwas intensiver mit PHP zu beschäftigen. Um genau zu sein mit einem Framework welches in dieser Sprache geschrieben ist. Symfony setzt auf dem MVC-Pattern auf und arbeitet dazu ganz ähnlich wie das MVC-Framework Struts für Java. Mit diesem hatte ich bereits im Studium ein wenig zu tun und fand insbesondere die Idee des Patterns sehr praktisch.

Rechtzeitig zu meinem wirklichen Einstieg in Symfony wurde das Framwork in der Version 1.2 veröffentlicht. Besonders nett finde ich die Änderungen die zwischen 1.1 und 1.2 im Bezug auf die Integration des ORM Frameworks Doctrine sowie die Erweiterung der Formular-Verarbeitung gemacht wurden.

Der erste Eindruck von Symfony ist durchweg positiv, auch wenn einige Dinge für einen Java-Entwickler recht ungewohnt sind. So finden z.B. sämtliche Konfigurationen per YAML Datei (.yml) statt, in Java ist man ja eher XML oder eine Properties-Datei gewöhnt.

Was auf jeden Fall hervorsticht ist die durchweg gute Dokumentation des Frameworks. Leider ist Doctrine da etwas sparsam, speziell die API ist schlecht bis gar nicht dokumentiert.

Welche Spezialfälle ich nutze und warum Doctrine

Doctrine bringt von Haus aus einige Features mit, die Propel (die Alternative) nicht so ohne weiteres hat. Durch die Behaviors ist es sehr einfach möglich, zusätzliche Funktionalität in die Persistenzschicht zu verlagern.

  • Ich nutze z.B. für fast alle Tabellen „Versionable“ um die Felder ‚created_at‘ und ‚updated_at‘ hinzuzufügen. Diese werden dann automatisch durch das ORM tool gefüllt.
  • Ein weiteres für mich wichtiges Feature ist die Implementierung des Nested Set pattern. Mit diesem lassen sich in der relationalen Datenbank hirarische Daten ablegen. Nicht nur einzelne Bäume, sondern ganze Wälder. Es können also mehrere Bäume in einer Tabelle abgelegt werden.
  • Vorgesehen habe ich ebenfalls die Internationalisierung einiger Daten. Dies ist allerdings aktuell nicht vordergründig wichtig.

Dank des Formular Frameworks welches für die 1.2 Version von Symfony komplett überarbeitet wurde ist es sehr einfach möglich, komplexe Fomulare über die Implementierung von Klassen zu erstellen. Das zeitaufwändige erstellen der Inputfelder von Hand entfällt somit. Gleich mit dabei ist auch eine Validierung und ein ErrorHandling. In Zusammenarbeit mit Doctrine ist es z.B. möglich Auswahlfelder gleich auf ihre Gültigkeit zu prüfen. So gelangen dann auch nur gültige Werte in die Datenbank. Ist ein Formular nicht gültig, dann führt Symfony den User automatisch zum Formular zurück und zeigt die Fehler auch an.

Symfony bietet dank recht umfangreicher Generatoren viele Möglichkeiten, zeitaufwändige Aufgaben wie das Erstellen von Formularen, einem Administrator-Backend oder einfach nur den Klassen des Datenmodells Zeit zu sparen und sich so mehr auf den wirklich wichtigen Teil, die Logik, zu konzentrieren.

Insgesamt bin ich von der Lernkurve doch sehr überrascht, sie ist weit steiler als gedacht. Speziell dank des Jobeet Tutorials welches als Adventskalender auf der Projektseite zu finden war. Diese Tutorial umfasst quasi alle Grundlagen die ich bisher benötigt habe. Weitergehende Infos findet man dann in kleineren Tut’s oder auch im sehr umfangreichen Forum.

Bei Bedarf werde ich an dieser Stelle sicher mehr von meinen Erfahrungen berichten.

2 Kommentare zu “Symfony: Erste Erfahrungen”

  1. Jenny

    Hallo,

    ich arbeite ebenfalls seit Dezember mit der Version 1.2 von Symfony und bin auch sehr davon angetan. Allerdings habe ich es bis heute noch nicht herausbekommen, wie man ein Image-Upload ohne Multipart-Fehlermeldung ermöglicht. Hast du dies zufällig schon bewerkstelligt? Wenn ja, würde mich natürlich brennend interessieren wie. 🙂

    Viele Grüße,
    Jenny

  2. kai

    Hallo Jenny,

    ich habe gerade heute einen Bilder-Upload über Symfony realisiert. War gar nicht so einfach das so hinzubekommen wie ich das wollte. Ich werde mich diese Woche daran machen und einen Blog-Eintrag darüber verfassen.

    Schönen Gruß
    Kai