20.4 常见的基于MVC的PHP开发框架简介
PHP开发永远是一个活跃的领域,随着MVC设计方法、敏捷开发理念的流行,Web应用领域产生了大量的开发框架,使用这些框架可以迅速搭建Web应用,降低开发成本和缩小开发周期。
PHP社区也出现了大量MVC开发框架,本节向读者介绍4种比较活跃的PHP开发框架,即CodeIgniter、CakePHP、ZendFrame和FleaPHP。这些框架都有各自的特点与不足,而且它们有各自的设计目标和设计理念,这决定了它们有其适应的范围。实际开发中,应该根据具体的需求和应用环境选择适合的开发框架。
20.4.1 CodeIgniter
CodeIgniter是一个小巧但功能强大的由PHP编写的基于MVC的Web应用开发框架,作为一个简单而不强大的开发工具包,它可以为PHP程序员建立功能完善的Web应用程序。CodeIgniter的确是一个不错的MVC框架。这里还需要说明一点,CodeIgniter是经过Apache/BSD-style开源许可授权的免费框架。
CodeIgniter使用了模型(Model)、视图(View)、控制器(Controller)的方法最小化模板中的程序代码量。CodeIgniter生成的URL非常干净,而且对搜索引擎友好。不同于标准的“字符串查询”方法,CodeIgniter使用了基于段的(segment-based)URL表示法,用法如下。
www.mysite.com/aaa/bbb/123
这样的地址非常有利于搜索引擎搜索。除此之外,CodeIgniter拥有全面的开发类库,可以完成大多数Web应用的开发任务,例如读取数据库、发送电子邮件、数据确认、保存session、对图片的操作等。而且CodeIgniter提供了完善的扩展功能,可以有效帮助开发人员扩展更多的功能。更多关于CodeIgniter框架的内容,可以访问其官方网站,网址是http://www.codeigniter.com,从这里也可以下载最新版本和稳定版本的CodeIgniter。
20.4.2 CakePHP
第二个要介绍的PHP开发框架是CakePHP。CakePHP封装了数据库访问逻辑,对于小应用来说可以获得令人惊叹的开发效率。CakePHP比较有特色的地方是命令行代码生成工具让开发者可以快速生成应用程序框架。如果读者了解Ruby on Rails,在使用CakePHP构建Web应用之后,会发现CakePHP几乎就是Rails在PHP上的翻版。CakePHP也是完全基于MVC架构的Web开发框架,它有以下一些特点。
·兼容PHP 4和PHP 5。
·数据库交互和简单查询的集成。
·MVC体系结构。
·自定义的URL的请求分配器(Request Dispatcher)。
·内置验证机制。
·快速灵活的模板。
·支持AJAX。
·灵活的视图缓存。
·可在任何Web站点的子目录里工作,不需要改变Apache配置。
·命令行生成Web站点框架。
CakePHP也有一些不足,就是Model实现过于复杂,CakePHP中的Model不但尝试封装行数据集,甚至连数据库访问也包含在内。随着应用开发的展开,Model类的高度复杂性和几乎无法测试的特性,使得项目的重构变得困难重重,大大降低了开发效率和应用的可维护性。读者可以通过CakePHP的官方网站http://www.cakephp.org/了解关于这个框架更多的内容,从其官方网站上也可以下载最新版本和稳定版本的CakePHP。
20.4.3 Zend Framework
Zend Framework是完全基于PHP语言的针对Web应用开发的框架,与众多其他PHP开发框架相比,Zend Framework是一个PHP“官方的”的框架,由Zend公司负责开发和维护。Zend Framework同样基于MVC模式,并采用了ORM(Object Relational Mapping,对象关系映射)思路。所谓ORM思路,这是一种为了解决面向对象编程与关系数据库存在的互不匹配现象的技术。简单地说,这种技术将数据库中的一个表映射为程序中的一个对象,表中的字段映射为对象的属性,然后通过提供的方法完成对数据库的操作。就这一点而言,Zend Framework类似于现在流行的非PHP的开发框架Ruby on Rails。另外,20.4.2小节介绍的CakePHP也实现了这种技术。
Zend Framework的另一个特点是,它实现了Front Controller模式,也就是说,所有HTTP请求都会转发到同一个入口,然后再由路由功能模块转到相应的Controller。Zend Framework和其他几款PHP开发框架相比,比较庞大。除了最基本的MVC模型以外,Zend Framework还提供了一系列高级功能,如下是这些功能的一部分。
·Zend_Acl实现了非常灵活的权限控制机制。
·Zend_Cache提供了一种通用的缓存方式,可以将任何数据缓存到文件系统、数据库、内存。
·Zend_Log提供通用的log解决方案,支持格式化的log信息。
·Zend_Json封装了数据在PHP和JSON格式之间的转换操作。
·Zend_Feed封装了对RSS和ATOM的操作。
这里非常简单地向读者介绍了Zend Framework,读者可以通过Zend Framework的官方网站http://framework.zend.com/获取更多的信息,也可从官方网站获取最新版本的Zend Framework。
20.4.4 FleaPHP
FleaPHP是一款优秀的国产Web开发框架。FleaPHP致力于减少开发者创建Web应用程序的工作量,并降低开发难度和强度,提高开发效率。
FleaPHP除了MVC模式实现、分发调度器、模板引擎等常见功能外,还有以下一些重要特点。
·简单、容易理解的MVC模型。
·易于使用、高度自动化的数据库操作。
·尽可能少的配置。
·自动化的数据验证和转义。
·丰富的组件。
·与Smarty模板集成。
提示 读者可以通过FleaPHP的官方网站http://www.fleaphp.org/获取完整的关于该框架的知识和内容,也可以从官方网站上下载最新版本和稳定版本的FleaPHP。
正如该框架官网上所说的那样:FleaPHP缺乏Zend Framework那样巨大的号召力,也没有CakePHP和Symfony那样庞大的社区,但FleaPHP仍然是一个值得花时间去了解、去学习的框架。最后,笔者在这里加一句,国产的基于MVC的Web开发框架FleaPHP值得开发人员支持和大力推广,值得在实际开发中使用。
共有条评论 网友评论