Agavi

Agavi
Basisdaten

Aktuelle Version 1.0.8
(29. Juni 2015)
Betriebssystem plattformübergreifend
Programmier­sprache PHP
Kategorie Webframework
Lizenz LGPL
www.agavi.org

Agavi ist ein freies Webframework. Es ist objektorientiert in PHP 5 implementiert und gemäß dem Architekturmuster Model View Controller aufgebaut.

Geschichte

Ähnlich wie Symfony basiert Agavi ursprünglich auf der nie veröffentlichten Version 3 des einst populären PHP-Frameworks Mojavi, das vom US-Amerikaner Sean Kerr in Eigenregie entwickelt und schließlich eingestellt wurde.

Gegründet wurde das Projekt Anfang Mai 2005, als ein Team von Software-Entwicklern in Keller (Texas) aus Unzufriedenheit mit dem trotz der Open-Source-Lizenz geschlossenen und unklaren Entwicklungsprozess einen Abspaltung des PHP-Frameworks Mojavi starteten, mit dem Vorsatz, unter Einbeziehung der Community und mit einer offengelegten Roadmap ein Framework als Gemeinschaftsprojekt zu entwickeln.

Seit Anfang 2006 sind die ursprünglichen Gründer des Projekts aus Zeitmangel nicht mehr von der Partie; Agavi wird seitdem von einem internationalen Team unter Federführung eines Unternehmens aus München weiterentwickelt.

Philosophie und Besonderheiten

Im Vergleich zu anderen Frameworks beschränkt sich Agavi auf die Aufgaben, die klassischerweise in die Problemdomäne eines Frameworks fallen, und überlässt zum Beispiel die Objektrelationale Abbildung darauf spezialisierten Projekten. Dadurch soll ein Vendor Lock-In vermieden werden, bei dem bestimmte Funktionalitäten des Frameworks nur beim Einsatz eines bestimmten ORMs, einer bestimmten Template-Engine usw. einsetzbar wären.

Das Hauptaugenmerk liegt auf sauberem Code-Aufbau in den Applikationen unter strikter Trennung von Verantwortlichkeiten. Im Gegensatz zu vergleichbaren Web-Frameworks ist es mit Agavi in der Praxis tatsächlich möglich, den gleichen Code ohne Änderungen an bestehender Struktur und Logik auch unter anderen Bedingungen zu verwenden und so beispielsweise in einer bestehenden Web-Anwendung eine Webservice-Schnittstelle nachzurüsten, so wie es die MVC-Architektur eigentlich vorsieht. Der anfängliche Aufwand für die Erstellung einer Software ist dabei jedoch höher als mit anderen Frameworks, die sich darauf spezialisiert haben, Entwicklern bei der Erzielung schneller Ergebnisse zu unterstützen. Agavi enthält standardmäßig beispielsweise auch keine Unterstützung für Scaffolding (letztlich eine Konsequenz aus der Entscheidung, kein ORM mitzuliefern).

Eine Agavi-Applikation kann beliebige Umgebungen (z. B. für Produktion, Staging, Entwicklungsumgebung einzelner Programmierer) und Kontexte (z. B. Web, Kommandozeile, SOAP) definieren und darin ablaufen. Konfigurationsoptionen können dabei für beliebige Kombinationen von Umgebungen und Kontexten gesetzt werden, so dass beispielsweise die besonderen Request-Datenquellen beim Betrieb hinter einem Load Balancer für die Produktionsumgebung separat festlegbar sind, oder jeder Entwickler seine eigene Datenbank-Konfiguration hinterlegen kann, ohne andere Einstellungen zu überschreiben. Dadurch vereinfacht sich das Deployment einer Applikation erheblich.

Eine weitere Besonderheit ist der starke Fokus auf XML für die Konfiguration, der beispielsweise über Standardtechnologien wie XIncludes und XSLT eine einfache Modularisierung gestattet, oder Konfigurationsformate über XML-Namensräume versioniert werden, um Rückwärtskompatibilität sicherzustellen. Ebenfalls unterstützt werden XML Schema, RELAX NG und Schematron für die Validierung.

Merkmale

  • Kompatibel mit PHP5
  • Konfiguration über XML
  • Unterstützung für alle gängigen Datenbank-Abstraktionsschnittstellen und ORMs
  • Routing inklusive Rückwärtsgenerierung, nicht auf URLs beschränkt
  • Flexible Seitengestaltung mit beliebig vielen geschachtelten Vorlagen
  • Unterstützung für beliebige Template-Engines
  • Formularbehandlung (Fehlermarkierung, Fehlermeldungen, Befüllen von Formularen) unabhängig von der verwendeten Template-Engine
  • Mehrsprachigkeit und I18N-Unterstützung
  • Validierung für alle Eingabedaten (z. B. auch HTTP-Header, Cookies, Hochladen von Dateien)
  • Flexibles Caching auch von Teilen einer Seite
  • Keine mitgelieferten HTML-„Helper“, keine Bindung an ein ORM, keine Javascript-Bibliothek o. ä.

Rezeption

Siehe auch

Ähnliche Projekte

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.