FleaPHP 并不是心血来潮的结果,而是作者在 Web 开发中不断探索的成果。虽然 FleaPHP 缺乏 Zend Framework 那样巨大的号召力,也没有 CakePHP 和 Symfony 那样庞大的社区。但 FleaPHP 仍然是一个值得你花时间去了解、去学习的框架。
FleaPHP 的设计目标
FleaPHP 致力于减少开发者创建 Web 应用程序的工作量,并降低开发难度和强度,提高开发效率。
- 快速、轻量级,避免臃肿的结构带来的性能损失
由于 PHP 是解释执行,如果花费太多资源在框架本身,显然不适合的。就像一台计算机如果把大量的资源都花在操作系统上了,而应用程序能够得到的资源却少得可怜,显然是无法让用户接受的。
- 可扩展、开放性的架构,允许开发者引入自己的组件或者任何成熟的工具库
框架虽然提供了许多组件,但不可能完全满足用户的需求。因此,框架本身应该是松散耦合、可扩展的。开发者可以很简单的为框架加入新的组件。同时,框架的逐步发展也不应该影响框架的核心基础。最后,开放性的架构让开发者在框架中引入其他组件或者工具库时不会遇到任何困难。例如开发者可能会使用 Smarty 来做模板引擎,以及 PEAR 中的一些库来简化开发工作。
- 尽可能少的契约,但同时提供足够的自动化能力,减轻开发强度
虽然契约式编程,可以让框架本身的设计变得更简单,开发者也能从框架获得更多的帮助。但太过严格的规则和约定会明显降低框架的适应性,为此需要对两者进行适当的平衡。FleaPHP设计时采用尽可能少的契约,通过更复杂的实现来实现一些自动化能力。或者以最少量的配置信息来帮助框架为开发者提供服务。
- 高度灵活的解决方案,提供开发应用程序的大多数基本组件
虽然现在已经有许许多多出色的工具库可供选择。但对于一些平常的需求来说,这些工具库可能具有过度杀伤能力(也就是说工具库本身提供了远远超过需求的功能)。由此带来了学习难度增大、性能降低等问题。为此,FleaPHP 框架提供了一组轻量级的基本组件。这些组件被设计为拥有基本的功能和可扩展。 例如 FleaPHP 附带的基于角色的权限验证组件虽然不如 phpGACL 这样的库功能强大,但却能够解决平常开发都会遇到的典型权限验证问题,并允许开发者自行扩展这个组件。
FleaPHP 的主要特征
除了 MVC 模式实现、Dispatcher 调度器、模板引擎等常见功能外,FleaPHP 框架还拥有许多独一无二的特点:
- 简单、容易理解的 MVC 模型
不像其他流行的框架,FleaPHP 提供的 MVC 模型注重简单和容易理解。例如 FleaPHP 不要求开发者从特定的类派生自己的控制器类和业务模型类。
- 易于使用、高度自动化的数据库 CRUD 操作
FleaPHP 采用 TableDataGateway 设计模式来封装数据表操作。FLEA_Db_TableDataGateway 类不但提供了容易使用的 CRUD 操作,还实现了数据表之间的关联操作。同时,FleaPHP 没有像其他框架那样将每一行记录都封装为一个对象(毫无疑问这会产生明显的性能问题),而是利用 PHP 强大的数组来保存和传递数据。
- 尽可能少的配置
虽然像数据库联接信息等配置仍然是不可少的,但 FleaPHP 应用程序通常只需要设置几个选项,即可在各种环境中运行良好。而且 FleaPHP 的所有设置都采用 PHP 数组来保存,不但容易理解,而且省掉了解析、缓存等不必要的过程,提高了性能。
- 高度可配置能力
虽然 FleaPHP 自动化程度很高,但 FleaPHP 同时也拥有高度的可配置能力。通过覆盖 FleaPHP 默认的选项,开发者可以获得最大程度的灵活性。让开发者可以在适应现有代码、保持开发习惯等各方面获得好处。
- 自动化的数据验证和转义
即便不做任何处理,程序将数据通过 FLEA_Db_TableDataGateway 提交到数据库前。FleaPHP 也会自动对数据进行验证,并转义特殊字符,最大程度消除 SQL 注入攻击。
- 丰富的助手对象和组件
FleaPHP 附带了一些非常实用的助手对象,从生成图像验证码、处理文件上传到通用数据验证等。这些助手对象大多是一些独立的对象,完全不依赖于 FleaPHP 框架本身。因此开发者不但可以在 FleaPHP 之外使用这些助手对象,也可以方便的加入自己的助手对象。 组件是比助手对象更为复杂的可重用单元。这些组件包括基于角色的用户管理、脚手架等。利用这些组件,开发者可以很快的完成一些常见任务,并能在这些组件基础上扩展出功能更复杂的组件。
- 与 Smarty 集成
只需要修改几个选项,FleaPHP 应用程序就可以和流行的 Smarty 模版引擎集成。
- 100% FREE
当然,最后一点就是 FleaPHP 是一个完全开放源代码和文档(不是那种滑稽的删除了所有注释仅能运行的代码)、不限制使用的项目。你可以自由的学习、使用 FleaPHP,也可以在自己的应用程序中使用 FleaPHP。不管你的应用程序是否是商业应用,都不需要公开你的源代码,从最大程度上保护了你的知识产权。不过如果你愿意将代码反馈到社区,那么大家都会感谢你。
请记住,FleaPHP 是一个持续发展的框架,随时有新特性被加入到框架中。你现在需要,但 FleaPHP 尚未提供的功能,也许不久以后就出现在 FleaPHP 中了。当然,这需要你积极参与 FleaPHP 的发展,提出你的建议和意见。
自由的 FleaPHP
FleaPHP 是一个遵循 BSD 协议发布的开放源代码应用程序开发框架。你可以免费获取 FleaPHP 框架,并应用到自己的开发工作中。与流行的 GPL 协议不同,FleaPHP 遵循的 BSD 协议不要求开发者将基于 FleaPHP 框架开发的应用程序公布于众。这很好的保护了开发者及其所属企业的利益。更进一步,即便你基于 FleaPHP 实现了自己的产品或者对 FleaPHP 进行了修改以满足自己的需求。你仍然不需要公布你的劳动成果。
下面是关于 BSD 协议的简单介绍:
BSD 开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了 BSD 协议的代码,或者以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件:
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。
- 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD 协议。
- 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD 协议鼓励代码共享,但需要尊重代码作者的著作权。BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
FleaPHP的起源
两年多以前,我开始涉及使用 PHP 开发 Web 应用的工作。在反复编写一些过程式代码后,我彻底厌倦了这种开发方式,开始怀念 C++ 中的面向对象设计。这时,正好在 ChinaUnix 上看到了shukebeita兄的精华贴。在这篇帖子里,shukebeita 提出了一种面向对象的 PHP 应用开发方式。虽然只有一个雏形,但这已经让我受益匪浅。
随后,我根据 shukebeita 的思路实现了 PFC 的第一个版本(当时命名为轻量级 OO 框架)。其实说起来,根本不能称之为框架,仅仅只有两个类。但已经实现了一个简单但实用的核心结构。现在回过头来看,PFC1 实际上实现了一个 Dispatcher 模式,根据 HTTP 请求中的 action 参数调用不同的代码。
在接下来的两年时间,PFC 不断翻新,最终发展到了 PFC3。该版本的 PFC 已经完整的实现了 Dispatcher、MVC 模式,并且引入了 ViewDriver 抽象层、基于角色的权限验证、采用 Provider 模式实现的用户和角色信息管理、一个简单的但带有缓存功能模板引擎等内容。期间曾经试图将 PFC 发扬光大(笑),可惜由于工作变动和个人原因,项目进度非常缓慢,最后终于放弃了。但导致 PFC 放弃的主要原因并不是因为进度缓慢,而是因为我看到了 Web 应用开发的杀手 —— Ruby on Rails。
Ruby on Rails
Ruby on Rails(后文简称 RoR)是一个采用 Ruby 语言实现的快速、轻便的 Web 应用开发框架,通过契约式编程大大简化了 Web 应用的开发工作。
所谓契约式编程,基本思想就是开发者必须严格遵守框架确定的一些规则和模式(例如对象命名、数据库主键字段命名等)。由于这些规则和模式的存在,框架可以自动完成许多以前需要开发者自己处理的工作。例如根据特定的名字,获取业务对象或者数据表操作对象。更主要的原因是 RoR 实现了 ActiveRecord 模式,并且在这个基础模式之上,扩展了许多便于开发者操作数据库的方法。
虽然 ActiveRecord 只能处理 Create(建立)、Read(读取)、Update(更新)、Delete(删除)等数据表操作,以及一对一、一对多和多对多等几种有限的数据表间关联关系。但我们平时开发的大量应用程序,CRUD 又何尝不是其中的主要内容呢。因此,RoR 为开发者解决了大部分日常任务,让开发者可以集中精力到更关键的地方,例如业务流程的实现。
在我看到 RoR 后,明白 PFC 虽然已经解决了 MVC 模式、权限验证等任务,但最主要的数据库访问却没有提供任何能够简化开发的解决方案。经过反复考虑,我终止了 PFC 系列,开始了一个“全新”的框架设计。
Flea1 与 FleaPHP
最初,这个新框架沿用了PFC系列的命名方式,命名为 flea1(也就是 FLEA 第一版)。在这个版本中,我试验了一些想法,并取得了不错的效果。
不过,我没有采用严格的 ActiveRecord 模式,而是采用了类似CakePHP,一个类似 RoR 的 PHP 框架的 Model 设计。这种设计既实现了 CRUD 操作,又实现了数据表间的关联操作。将这个最初版本的 flea1 框架应用到实际工作中后,马上取得了立竿见影的效果。数据库访问工作被大大简化,甚至连数据库访问代码都不用写了。而且对于数据表之间的关联,也能完成自动化的处理。
接下来,我拿到了《企业应用架构模式》这本经典的设计模式书籍。经过仔细研究,并实际测试。我发现在 PHP 里面使用 ActiveRecord 模式并不是一个很好的选择。因为 ActiveRecord 实际上是针对数据表里面的每一个数据行构造一个对象。这样一来,对于 PHP 这种面向对象能力不强(尤其是 PHP4)的脚本语言来说,带来了许多棘手的问题。
最终,flea1 的设计方案进行了一些调整,确定为现在的架构,并且框架命名为 FleaPHP。
未来的发展
FleaPHP 在外来将继续保持简单易用、高度模块化的特点,但同时通过可插入的模块形式提供更多的功能。
FleaPHP 项目的短期目标:
- 完善文档
一个成功的项目,离不开完善的文档和技术支持。目前,FleaPHP 的核心和主要功能已经日趋稳定,但文档还很匮乏。所以,近期 FleaPHP 项目组的主要工作就是完善文档,确保开发者能够尽快掌握 FleaPHP 的使用。文档目前正在撰写的包括开发指南和一些系列文章。
- 支持更多的数据库系统
目前,FleaPHP 仅能支持 MySQL 数据库。但由于 FleaPHP 的数据库抽象层非常简单,所以短期内即可增加对多种数据库的支持。
FleaPHP 项目的长期目标:
如果你有热情,并且有能力为 FleaPHP 做贡献,我们随时都欢迎你加入 FleaPHP 开发者团队!
相关推荐
Fleaphp的核心组成部分包括路由系统、控制器、模型、视图、数据库操作、模板引擎、缓存机制以及错误处理等关键模块。下面将对这些模块进行详细介绍: 1. **路由系统**:Fleaphp的路由系统负责解析URL请求,并将其...
在Fleaphp 1.7.1524中,我们可以探讨以下几个关键知识点: 1. **轻量级框架**:Fleaphp设计的核心理念是简洁和高效,它拥有较小的体积,适合快速开发小型到中型的Web应用。这种框架的优点在于它易于学习,且不会对...
这个“fleaphp中文手册详细版”是为那些希望学习或深入了解Fleaphp的人准备的宝贵资源,特别适合初学者。下面,我们将深入探讨Fleaphp框架的核心概念、特性以及如何使用它进行开发。 一、Fleaphp框架概述 Fleaphp...
作为一款优秀的框架,Fleaphp旨在提供高效、简洁且易于上手的开发工具,帮助开发者快速构建Web应用。下面将详细介绍Fleaphp的主要特点、核心组件以及如何使用它进行开发。 1. **主要特点** - **轻量级**:Fleaphp...
2. **MVC模式**:Model-View-Controller(模型-视图-控制器)是FleaPHP的基础设计模式,它将业务逻辑、数据处理和用户界面分离,提高了代码的可读性和可维护性。 3. **路由系统**:FleaPHP拥有灵活的路由规则,可以...
Fleaphp的核心设计理念是“简洁、实用”,为开发者提供了一套高效的开发工具集,使他们能够快速构建动态、数据库驱动的Web应用。 在“fleaphp框架附实例(最新版)”中,我们可以期待获得以下几方面的知识点: 1. **...
fleaphp.chm手册
在本文中,我们将深入探讨Fleaphp框架的核心特性,常见问题及解决方案,以及如何有效地使用这个框架进行项目开发。 1. **框架结构与配置** Fleaphp框架采用MVC(Model-View-Controller)设计模式,使得业务逻辑、...
fleaphp框架,国产最好php开发框架
本手册将深入探讨FleaPHP框架的核心组件和使用方法,帮助您更好地理解和应用这个框架。 FleaPHP框架的核心特点包括: 1. **模块化设计**:FleaPHP采用模块化结构,允许开发者将应用分解为独立的模块,便于管理和...
**FleaPHP的单入口文件详解** 在PHP开发框架中,单入口模式是一种常见的设计模式,它主要用于管理和控制应用程序的流程。FleaPHP作为一个轻量级的PHP框架,也采用了这种模式,以此来保证程序的高效性和易于维护。...
在FleaPHP开源应用程序开发框架中,有几个关键的系统方法,它们是开发高效Web应用的基础。下面我们将详细探讨这些方法: 1. **FLEA::initWebControls()**: 这个函数用于初始化WebControls,它返回一个`FLEA_...
FleaPHP chm文档,简单实例,框架流程介绍
`Smarty.chm`包含了关于Smarty的模板语法、配置、缓存机制、插件开发等详细信息,对于希望提升PHP项目结构的开发者非常有价值。 【正则表达式】:正则表达式是用于处理字符串的强大工具,可用于数据验证、搜索替换...
FleaPHP采用MVC(Model-View-Controller)架构模式,这是一种广泛应用于Web应用开发的设计模式,它将数据处理、业务逻辑和用户界面分离,提高了代码的可读性和可维护性。在FleaPHP中,模型负责处理数据,视图负责...
### FleaPHP框架学习教程知识点概述 #### 一、FleaPHP框架简介 - **特点**:FleaPHP是一款轻量级的PHP框架,旨在帮助开发者快速、轻松地创建应用程序。该框架简单易懂,拥有丰富的示例和中文文档,支持PHP4和PHP5...
【fleaphp AJAX Login 实例详解】 在Web开发中,用户登录是常见的功能,而AJAX(Asynchronous JavaScript and XML)技术的应用使得用户交互更加流畅,无需刷新页面即可完成登录操作。本实例将深入探讨如何使用...
Fleaphp框架是一款基于MVC(Model-View-Controller)架构的PHP开发框架,它由FleaPHP项目发展而来,以简化Web开发流程、提高开发效率而设计。Fleaphp框架遵循轻量级原则,支持快速开发和可维护性,并且易于上手,...
《Fleaphp开发指南》是一本专为初学者设计的PHP框架学习手册,特别针对FleaPHP这一轻量级框架进行了深入浅出的讲解。FleaPHP是一款基于PHP5的MVC(Model-View-Controller)架构的开源框架,旨在简化Web应用的开发...