The Agavi Way

Frameworks für PHP5 gibt es wie Sand am Meer. Mehr oder weniger gut sollen sie dem Entwickler helfen, Probleme zu vereinfachen. Dabei treten aber erstmal welche auf: neue Datenbankschnittstelle, Platzierung des Codes unklar, standartisierte Lösungsansätze fehlen – dies sind nur einige Dinge auf die man bei der Benutzung stoßen wird.
Bei einem Vergleich sind wir dabei auf Agavi gestoßen, wiedermal ein Framework welches aus dem Frust über Mojavi3 entstanden ist. Es basiert auf dem MVC Paradigma und hat einen entscheidenen Vorteil: Es zwingt dazu sauberen Code zu schreiben. Außerdem wird einem nicht ein neues Datenbank- oder Templatesystem vorgesetzt. Eher hat man die Qual der Wahl: Propel oder Doctrine,  PHPTal oder normales PHP. Natürlich sind viel mehr Kombinationen möglich.
Agavi beschränkt sich also auf die Kerngeschäfte eines Frameworks und bietet dem Entwickler einen sinnvollen Baukasten mit folgenden Features an:

  • Configuration Management
  • MVC (Models, Views, Controllers)
  • Security
  • Routing und Speaking URL’s
  • Generischer Benutzer mit RBAC
  • Template (Renderer) Baukasten
  • Outputtypes (Web, Console, Soap, JSON)
  • Sessions und deren Storagependants
  • Logging
  • Validation (GET/POST)
  • I18N

Alle Bauteile sind durch abstrakte Klassen und Interfaces beschrieben was eine Erweiterung einfach gestaltet, außerdem wird das PHP5 Exception Modell konsequent durchgezogen. Durch Phing wird zusätzlich ein Buildtool mitgeliefert welches dem Entwickler ermöglich alle Komponenten der Software zu erstellen. Somit werden Stubs für Actions oder Models schnell erstellt.
Natürlich sind die klassischen Probleme der Einarbeitszeit noch vorhanden, die Lernkurve ist allerdings hoch – Und hat man sich den ‘Agavi Way’ angeeignet, geht alles weitere schnell von der Hand!

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.