Agavi is an open-source MVC-style application framework for PHP 5 with strong support for important features such as web services, internationalization, and a heavy focus on code modularity and reusability.

(Note that the metrics that Ohloh provides regarding Agavi are incorrect, as the Ohloh system does not have a sufficient understanding of Agavi's source control repository; however, the activity it reports is correct.)

Journal Entries

Avatar

Just committed a change to trunk that allows using array syntax for slot names - much easier to handle lots of slots in templates this way Wombert — 24 days ago

Avatar

Starting to implement build system support for the Agavi testing subsystem. Along the way we'll add the ability to specify properties for models, methods to handle for actions and output types for views at build time. Xylakant — about 1 month ago

Avatar

I fixed a problem which would allow spammers to get their spam posted at the agavi commits mailing list by carefully crafting broken Email headers. ddb — about 1 month ago

Avatar

Agavi 1.0.1 has just been released and contains a couple of minor bugfixes and other changes. Wombert — 2 months ago

See All Journal Entries


Ratings & Reviews

Community Rating
5.0/5.0

Based on 45 user ratings.

Your Rating

Click to rate this project.

over 2 years ago Avatar
Military grade universal PHP application framework

  by Mike Seth

Agavi is special, military grade, professional PHP application framework.

Agavi is:

* Pure PHP5 only
* Fully OOP and MVC
* Versatile, modular and 100% extensible
* Conservative and focused
* High performance
* XML enabled

....application framework that enables creation of arbitrary PHP applications. It is not designed solely for Web applications and enforces strict (yet flexible) separation of ... [More] application logic and presentation, allowing you to expose your application through arbitrary interfaces (from Agavi's perspective, it is immaterial whether you are interacting through a web browser, a serial console or a cron script running in a virtual machine on your cellular phone: no matter the media, you write your code once).

Outstanding quality of code written by brilliant developers who adopted the best of Mojavi legacy, customizable code generation tools, ample selection of utilities, independence of particular database and content production libraries, agressive caching features, extensible and magical configuration using intuitive XML, complete and proper support for internationalization, routing subsystem that beats pretty much every other framework, and many many more awesome features that can only be fully appreciated by professionals:

* Configurable two-sided filterchains; application and framework logic is wrapped by filters before and after execution (and is executed inside a filter), both globally and locally
* Contained and deferable execution of logic in tightly isolated environment (e.g. you can not access $_FILES or $_SESSION directly)
* High level security enforcement. RBAC implementation is available.
* Automagical XML to PHP compiler (XML configuration is read *once* after a change!)
* Mojavi-style slots and layered output buffering allow highly customizable decorator templates
* Highly consistent class hierarchy, clean source code, phpdoc comments and generated API documentation
* Phing as the underlying build engine
* Automatic and highly customizable filling of HTML forms
* Per-action validation defined in XML DSL
* Conditionally cacheable actions
* Easy integration with many existing database libraries and templating engines (no specific library or engine is required or encouraged)
* Easy incremental refactoring of legacy applications into Agavi
* Ideally fits PHP's execution model
* Powerful session management, with separate and extensible code for management and storage
* Extensive use of class autoloading - any part of Agavi can be customized or replaced
* Reliance on full power of PHP5 (data reflection, exceptions, XPointer/XPath etc).
* Fully supports web services, and multi-media, multi-user, multi-context applications
* Conservative restraints on what is accepted into the distribution: Agavi does not and will not carry libraries for HTML generation, Ajax, ORM and other stuff that doesn't belong in an universal framework
* Fully suitable for real life, mission critical production.
* Nice

Agavi is a work in progress (core API frozen until release 1.0) and its documentation is being improved. This author relies on Agavi heavily in intranet and Internet production environments.

[Less]

10 of 10 users found the following review helpful. Was this review helpful to you? |

8 months ago Avatar
Suits business needs

  by Craig Fairhurst

Agavi is a non-restrictive and extensible framework that offers the developer an environment to create maintainable code within.
Most of Agavi configuration is done from within XML files, which are compiled into PHP code on the first run. The overhead isn't noticeable and the benchmarking times reflect this. There isn't much need to get too involved in the settings to get started, simple database configuration is available and you will need ... [More] to define how output is made via header and footer files with examples available.
The ability to plug-in other libraries and toolkits is possibly Agavi's main feature. The natural integration with other popular codebases offers the best of all worlds.
If you are new to frameworks the terminology and methodologies may take some time to get used to and fully appreciate, but the value is there.
Getting started with Agavi is a matter of having the time to commit and the desire to implement a solution that will have long term benefits. Agavi isn't a quick-fix solution for generating reams of code however the end result is noticeably better.
Thanks go to the Agavi team for their ongoing commitment to the project.

Links:
http://talks.php.net/show/froscon08/28 - Benchmarking times
http://trac.agavi.org/browser/documentation/trunk/topics/examples - Code from examples for output config
http://groups.google.com/group/agavi-users/msg/ccea4e9c3d4b74e7 - A sample application
[Less]

2 of 2 users found the following review helpful. Was this review helpful to you? |

Links

2 links submitted so far. Submit your own links.

News

Edit RSS feeds.

    Agavi 1.0.1 released!

    Agavi 1.0.1 is now available for download at www.agavi.org.

    This maintenance release fixes a number of issues over Agavi 1.0.0 and brings a couple of minor enhancements.

    The following are worth mentioning:

    Most notable, a ... [More] race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
    Arrays that failed validation are now always purged correctly from request data.
    Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
    Caching callbacks in the Execution Filter are now passed the current Execution Container as last argument.
    It’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
    Support for document/literal wrapped style SOAP services has been improved.
    Two regressions related to AgaviRoutingCallback::onGenerate() have been fixed.
    A memory leak in AgaviTranslationManager::getLocaleIdentifier() was fixed.
    Handling of slashes and dots in Action, View and Model names has been unified - slashes are now always used internally.
    The bundled Timezone database was updated to version 2009g.
    Several other minor fixes and enhancements.

    As usual, please check the CHANGELOG for a complete list of changes. [Less]

    Agavi 0.11 end-of-life schedule

    Today we’re announcing the end-of-life and end-of-support dates for Agavi 0.11.

    We will stop providing any changes and fixes after June 30, 2009. One last 0.11 version is scheduled for release shortly after this date.

    Security ... [More] fixes will be provided until December 31, 2009. Releases will be made when necessary.

    We will continue merging timezone database updates from newer branches until December 31, unless the storage format or necessary infrastructure changes. However, no releases will be made just for those updates, so you will have to pull the data from the SVN repository branch if you want to remain on the Agavi 0.11 series.

    Commercial support is available through our company, Bitextender GmbH, and we are also offering bugfix ports after the official end-of-life date. Please see the Support section on www.agavi.org for details.

    We’d like to thank all of you who used Agavi 0.11.x over the last couple of years and helped make it what it is today with your input and feedback, and encourage everyone to upgrade to Agavi 1.0, which packs the same stability, and an even more impressive set of features. [Less]

    Agavi 1.0.1 RC2 released!

    Agavi 1.0.1 RC2 is now available for download at http://www.agavi.org/

    This maintenance release fixes a number of issues over Agavi 1.0.0 and brings a couple of minor enhancements.

    The following are worth mentioning:

    Most ... [More] notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
    Arrays that failed validation are now always purged correctly from request data.
    Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
    Caching callbacks in the Execution Filter are now passed the current Execution Container as last argument.
    The bundled Timezone database was updated to version 2009f.
    It’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
    Support for document/literal wrapped style SOAP services has been improved.
    Two regressions related to AgaviRoutingCallback::onGenerate() have been fixed.
    A memory leak in AgaviTranslationManager::getLocaleIdentifier() was fixed.
    Handling of slashes and dots in Action, View and Model names has been unified - slashes are now always used internally.
    Several other minor fixes and enhancements.

    As usual, please check the CHANGELOG for a complete list of changes.

    A final release is to follow soon; we’re waiting for a new timezone database release that is scheduled for early next week. [Less]

    Agavi 1.0.1 RC1 released!

    Hello folks,

    Agavi 1.0.1 RC1 is now available for download at www.agavi.org

    This maintenance release fixes a number of issues over Agavi 1.0.0 and brings a couple of minor enhancements.

    The following are worth ... [More] mentioning:

    Most notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
    Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
    The bundled Timezone database was updated to version 2009d.
    Last but not least, it’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
    Support for document/literal wrapped style SOAP services has been improved.
    Two regressions related to AgaviRoutingCallback::onGenerate() have been fixed.
    Handling of slashes and dots in Action, View and Model names has been unified - slashes are now always used internally.
    Several other minor fixes and enhancements.

    As usual, please check the CHANGELOG for a complete list of changes.

    Stay strong,

    David [Less]

    Agavi 0.11.7 released!

    Agavi 0.11.7 is now available for download at www.agavi.org

    This maintenance release fixes a number of issues over Agavi 0.11.6.

    The following are worth mentioning:

    Most notable, a race condition in configuration file ... [More] compilation was fixed that could lead to corrupt compiled files on disk.
    Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
    The bundled Timezone database was updated to version 2009d.
    Last but not least, it’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
    Several other minor fixes.

    As usual, please check the CHANGELOG for a complete list of changes.

    Greetings,

    David [Less]

Read all Agavi articles…

Download

Who uses Agavi?

Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar

Who contributes to Agavi?

Avatar Avatar Avatar Avatar Avatar Avatar Anon32 Anon32
I'm a contributor

Who manages Agavi?

Avatar Avatar
I'm a manager

Where in the world?




People who use Agavi also use:

Propel PDO


Project Cost

This calculator estimates how much it would cost to hire a team to write this project from scratch. More »
Include
Codebase 2,814,737
Effort (est.) 809 Person Years
Avg. Salary $ year
$ 44,503,187