当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

FleaPHP

PHP 开发框架
授权协议 BSD
开发语言 PHP
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 余天宇
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 进行了修改以满足自己的需求。你仍然不需要公布你的劳动成果。

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 提供更多的插件。这些将要增加的插件包括完整的 Ajax 支持。

  • 吸收开发者参与,将 FleaPHP 建设为一个成功的社区开源项目

  • FLEA/FLEA/Helper/Array.php 源代码如下: function array_to_tree($arr, $fid, $fparent = 'parent_id', $fchildrens = 'childrens', $returnReferences = false) { $pkvRefs = array(); foreach ($arr a

  • http://www.cnblogs.com/tdalcn/archive/2011/04/23/2025592.html Pager 分页函数 /**        * 构造函数        *        * 如果 $source 参数是一个 TableDataGateway 对象,则 FLEA_Helper_Pager 会调用        * 该 TDG 对象的 findCount()

  • Fleaphp常见函数功能与用法示例 本文实例讲述了Fleaphp常见函数功能与用法。分享给大家供大家参考,具体如下: 1. FLEA_Db_TableDataGateway::update()用法: 例如:修改一条 uid=22 的记录, name字段改成"11", pass字段改成"22",就要这样写: $data = array('uid'=>22,'name'=>11,'pass'=>22

  • 本文实例讲述了php基于Fleaphp框架实现cvs数据导入MySQL的方法。分享给大家供大家参考,具体如下: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ class Controller_KaoqinUpload extends FLEA_Cont

  • 由于要做一系列的程序,需要一个良好的框架。于是一致扩充完善自己的小框架。最后快完成的时候放弃了。实际上,最好的方法是选择现成的框架。这样有了什么新技术或者新方法有人替你更新了。而且自己的新方法还可以直接作为扩展来添加进去。但是缺点是市面上的框架是面向各种用户的,所以速度上当然没有我们自己写的小框架快了。我自己写的MVC框架实现hello word只需0.000232934951782秒。 对于使用

  • 简单、容易理解的 MVC 模型 不像其他流行的框架,FleaPHP 提供的 MVC 模型注重简单和容易理解。例如 FleaPHP 不要求开发者从特定的类派生自己的控制器类和业务模型类。 易于使用、高度自动化的数据库 CRUD 操作 FleaPHP 采用 TableDataGateway 设计模式来封装数据表操作。FLEA_Db_TableDataGateway 类不但提供了容易使用的 CRUD 操

  • 这篇文章主要介绍了Fleaphp常见函数功能与用法,结合实例形式总结分析了Fleaphp框架中常见函数的功能、定义、使用方法与相关注意事项,需要的朋友可以参考下 本文实例讲述了Fleaphp常见函数功能与用法。分享给大家供大家参考,具体如下: 1. FLEA_Db_TableDataGateway::update()用法: 例如:修改一条 uid=22 的记录, name字段改成"11", pas

  • 最近用了一下Fleaphp,也是菜鸟一小只,反正我看fleaphp的API看的时候有时是懵懵懂懂,关键问题所在没有例子,所以在学习的同时把常用的和不长用的函数做了一下整理,这里包括在论坛上一些正确的答案,并加入了一些例子,方便一下想学fleaphp而又苦于看API的时候没有例子看的朋友,鄙人也是小菜鸟,写的不好,有些过于简单,所以请大虾闪过,鄙人是看到哪里写到哪里,跳跃性比较大,有点乱,所以请大家

  • find函数的原型 复制代码 代码如下: /** * 返回符合条件的第一条记录及所有关联的数据,查询没有结果返回 false * * @param mixed $conditions * @param string $sort * @param mixed $fields * @param mixed $queryLinks * * @return array */ function & find

  • fleaphp中的常用函数findAll,主要用与构造sql语句并查询数据,findAll方法的使用和示例 findAll的函数原型是/** * 查询所有符合条件的记录及相关数据,返回一个包含多行记录的二维数组,失败时返回 false * * @param mixed $conditions * @param string $sort * @param mixed $limit * @param 

  • fleaphp常用方法分页之Pager使用方法,需要的朋友可以参考下。 Pager 分页函数 /** * 构造函数 * * 如果 $source 参数是一个 TableDataGateway 对象,则 FLEA_Helper_Pager 会调用 * 该 TDG 对象的 findCount() 和 findAll() 来确定记录总数并返回记录集。 * * 如果 $source 参数是一个字符串,则假

  • http://bbs.php.cn/thread-25165-1-1.html FleaPHP 开发基础 - 第一部分 一、开始前的准备工作 为了避免各种不同开发环境配置对学习 FleaPHP 造成的干扰,因此建议你按照本文配置一个专门用于学习 FleaPHP 的开发环境。 二、FleaPHP 中的 MVC 模式 理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用

 相关资料
  • "One does not live by bread alone,but by every word that comes from the mouth of God" --(MATTHEW4:4) python开发框架 不管是python,还是php,亦或别的做web项目的语言,乃至于做其它非web项目的开发,一般都要用到一个称之为什么什么框架的东西。 框架的基本概念 开发这对框架的认识,由于

  • 「盘古开发框架」是一套轻量稳健的工业级前、中、后台三维多端行业数字化赋能开发框架。基于商业友好的 Apache-2.0 协议免费开源发布。我们希望不仅是开源的受益者也能成为开源贡献者,与开源社区一起共建共享开源生态。 生态子项目 盘古开发框架由「盘古服务开发框架」、「盘古中后台业务系统开发脚手架」、「盘古移动端多平台开发脚手架」三个子项目组成。可以单独拆箱使用,也可以打包整合。 盘古服务开发框架(

  • nebula3 是一个游戏引擎和开发框架,可移植的特性支持多平台,包括 iPhone。 http://code.google.com/p/nebula3-engine/

  • 在尝试了使用 AWS 开发 Serverless 应用之后,我便想尝试使用 OpenWhisk 框架来搭建自己的 Serverless 服务。 Apache OpenWhisk(http://openwhisk.org/)是一个由IBM和Adobe驱动的开源项目,它是一个健壮的FaaS平台,可以部署在 云或数据中心内。相比其他serverless项目,OpenWhisk是一个健壮的、可扩展的平台,

  • 本项目是win32下大型客户端游戏的游戏辅助开发框架,由于它集成并包含了游戏辅助开发的各方面功能,称本项目为win32辅助开发的组件也可。 内含具体项目有fifa online3、疾风之刃、怪物猎人online、流放之路等,也有辅助帐号验证服务器,帐号查寻与管理工具,特征码识别,资源文件系统等。 本人现已转型,特发布此项目,旨在分享一份只供参考的多年工作经验与心血,若本项目中有些您认为闪亮的设计、

  • 本文向大家介绍thinkPHP5.0框架开发规范简介,包括了thinkPHP5.0框架开发规范简介的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP5.0框架开发规范。分享给大家供大家参考,具体如下: 命名规范 ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 目录和文件 目录不强制规范,驼峰及小写+下划线模式均支持; 类库、函数文件统一以

  • imi 框架基于Swoole的PHP协程开发框架,高性能,功能强大,运行稳定,开发方便,支持 Http、Http2、WebSocket、TCP、UDP、MQTT 等主流协议的服务开发,特别适合互联网微服务、即时通讯聊天im、物联网等场景!

  • 一个应用程序开发框架。作者实现了很多控件效果,方便其他开发者各取所需。所实现的效果包括:打分星星、响应点击动作、旋转按钮效果、根据文字多少改变大小的UILabel等等效果。 [Code4App.com]