Agavi

Agavi
Agavi
Aktuelle Version 1.0.6
(23. Juli 2011)
Betriebssystem plattformunabhängig
Programmier­sprache PHP
Kategorie Web Application Framework
Lizenz LGPL
www.agavi.org

Agavi ist ein quelloffenes Web Application Framework für PHP 5. Es ist objektorientiert implementiert und gemäß dem Architekturmuster Model View Controller aufgebaut.

Inhaltsverzeichnis

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 bestehende 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
  • Flexibles Layouting mit beliebig vielen geschachtelten Templates
  • Unterstützung für beliebige Template-Engines
  • Formularbehandlung (Fehlermarkierung, Fehlermeldungen, Befüllen von Formularen) unabhängig von der verwendeten Template-Engine
  • Mehrsprachigkeit und I18N-Support
  • Validierung für alle Eingabedaten (z.B. auch HTTP-Header, Cookies, Datei-Uploads)
  • Flexibles Caching auch von Teilen einer Seite
  • Keine mitgelieferten HTML-„Helper“, keine Bindung an ein ORM, keine Javascript-Bibliothek o.Ä.

Siehe auch

Ähnliche Projekte

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Agavi — Dernière version 1.0.4 [+/−] …   Wikipédia en Français

  • AGAVI — populi, ut putant, Septentrionales, quos Homer. circa initium l. 13. Il. dixit, gentem fuisse innocentissimam, ut quae sine divitiis, equinô lacte victitet. Vide Scholiastas in locum. Hesych. Α᾿γαυοὶ, ἔθνος Σκυθικόν …   Hofmann J. Lexicon universale

  • Albergo Parco Delle Agavi — (Искья,Италия) Категория отеля: 4 звездочный отель Адрес: Ss Lacco Forio …   Каталог отелей

  • Hotel Le Agavi — (Позитано,Италия) Категория отеля: 5 звездочный отель Адрес: Via Marconi 127, 84017 П …   Каталог отелей

  • Casa Le Agavi — (Портоферрайо,Италия) Категория отеля: Адрес: Località Magazzini 83, 57037 Портоферра …   Каталог отелей

  • Agriturismo Le Agavi — (San Mauro Cilento,Италия) Категория отеля: Адрес: Via Del Mare 45, 84070 San Mauro Cile …   Каталог отелей

  • Liste Des Prénoms Grecs — Sommaire 1 Origine des prénoms grecs 2 Attribution des prénoms 3 Fêtes 4 Transcription et translittération …   Wikipédia en Français

  • Liste des prenoms grecs — Liste des prénoms grecs Sommaire 1 Origine des prénoms grecs 2 Attribution des prénoms 3 Fêtes 4 Transcription et translittération …   Wikipédia en Français

  • Liste des prénoms grecs — Sommaire 1 Origine des prénoms grecs 2 Attribution des prénoms 3 Fêtes 4 Transcription et translittération …   Wikipédia en Français

  • RUDI — CRUD [kɹʌd] ist ein Akronym aus der Informatik. Es umschreibt die grundlegenden Datenbankoperationen Create (Datensatz anlegen), Read (Datensatz lesen), Update (Datensatz aktualisieren), und Delete (Datensatz löschen). Gelegentlich wird CRUD auch …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”