Agavi 是 “一个强大并且可伸缩的采用 MVC 范式的 PHP5 应用程序框架。”它为构建和部署基于 PHP 的 Web 应用程序提供全面的工具,并为安全性、数据缓存、国际化、输入验证和数据库抽象提供内置支持。它原来是 Mojavi 项目的一部分,目前由德国的一家软件公司 Bitextender GmbH 维护,并根据 GNU Lesser General Public License 2.1 向社区发布。
Agavi 的有趣源于多种原因。下面给出我认为最重要的 3 个原因:
- 首先,它强烈关注代码的可重用性,从而允许开发人员轻松创建通向应用程序的某项功能的不同接口。这对经常需要向内部公开 HTML 和 SOAP 接口的 Web 应用程序尤为重要。例如,假设您想要构建一个通向应用程序的现有搜索引擎功能的 SOAP 接口。通过使用 Agavi,这就像定义一个新的输出类型一样简单,或者像定义一个以新的格式输出现有函数的呈现器一样简单。没有必要修改现有的功能,从头构建的过程是很简单的,并且很容易实现。
- 其次,Agavi 提供一个高级的 URL 路由机制,允许进行大量配置,确定 URL 路由如何映射到应用程序函数。这个路由机制支持可选和必选参数、默认值、嵌套路由以及回调函数。它是 Agavi 的最重要特性之一。这个路由机制就像 Agavi 应用程序的其他配置一样,完全使用 XML 表示,并且 Agavi 的配置子系统允许在运行时访问全局的应用程序设置和变量。
- 再次,Agavi 以开箱即用的方式提供极度严格的请求过滤和输入验证。过滤器可用于提前或推迟处理控制器方法。在每次请求时都验证请求参数,并且 Agavi 会自动删除未知参数,从而大大降低 SQL 注入和类似攻击的风险。Agavi 包含大量用于执行常见任务的内置验证器,比如验证字符串、数字、时间戳、电子邮件地址和文件。对于内置验证器不足的情形,还可以使用正则表达式或定义定制验证器来执行验证。所有这些特性使得 Agavi 成为开发 Web 应用程序的最安全框架。
除了以上特性之外,Agavi 还提供:
- 一个条件缓存引擎。
- 支持最常见的数据库系统(包括 MySQL、PostgreSQL 和 SQL Server)和 ORM(包括 Propel 和 Doctrine)
- 一个会话管理引擎。
- 可定制的模板;完全遵从 OOP 原则。
总而言之,这个框架非常酷……现在让我们开始使用它!
使用 Agavi 进行 MVC 编程简介,第 1 部分: 使用 Agavi 开辟一个新世界
这是分为 5 部分的系列文章的第 1 部分。该系列是为对开源、灵活并且可伸缩的 Agavi 框架感兴趣的 PHP 开发人员编写的。在第一篇文章中,您将学习该框架和其他所需组件的安装步骤,大体了解 Agavi 及其功能,并创建您的第一个 Web 应用程序
使用 Agavi 进行 MVC 编程简介,第 2 部分: 使用 Agavi 和 Doctrine 添加表单和数据库支持
本文是分为 5 部分的系列文章的第 2 部分,介绍使用可扩展的开源 Agavi 框架构建输入表单,并使用 Doctrine 为项目自动生成数据模型,然后将这些模型集成到 Agavi 项目中。
使用 Agavi 进行 MVC 编程简介,第 3 部分: 使用 Agavi 添加验证和管理功能
这是一个 5 部分系列文章的第 3 部分,本部分通过增加一些可以删除、添加、更新汽车记录的功能继续构建这个 Web Automobile Sales Platform。本部分还将介绍如何使用验证分离用户功能和管理功能。
使用 Agavi 进行 MVC 编程简介,第 4 部分: 创建一个带有多种输出类型(XML、RSS 或 SOAP)的 Agavi 搜索引擎
在第 4 部分中为您的 Agavi 示例程序实现一个简单的搜索引擎并添加对多种输出类型(XML、RSS 或 SOAP)的支持。这个 5 部分系列是为对开源、灵活并且可伸缩的 Agavi 框架感兴趣的 PHP 开发人员编写的。
使用 Agavi 进行 MVC 编程简介,第 5 部分: 为 Agavi 应用程序添加分页、上传文件和定制输入验证器
本文是为 PHP 开发人员介绍开源、灵活和可伸缩的 Agavi 框架的五部分系列文章的最后一部分。在本文中,您将学习为 Agavi 应用程序上传文件、在会话中储存用户数据、集成第三方库和创建定制输入验证器。
利用 Agavi 创建 REST API
利用 Agavi PHP 框架实现 REST API