2.1 Yii简介
Yii框架作为一种热门的PHP框架技术,在当前的PHP开发领域正受到越来越多的关注。本节将首先介绍什么是Yii、Yii有什么优点、开发团队、性能及应用案例等内容。通过对本节的学习,读者会对Yii有一个大致的认识。
2.1.1 什么是Yii框架技术
Yii是一个基于组件的高性能PHP框架,用于快速开发大型Web应用。它使Web开发中的可复用度最大化,可以显著提高Web应用开发速度。Yii读作“易(Yee)”或“[ji:]”,这个名字是“Yes it is! ”的缩写。
“Yii快不快?安全吗?专业吗?是否适用于我的下一个项目?”“Yes, it is! ”
1.历史与开发团队
Yii是创始人薛强的心血结晶,于2008年1月1日开始开发。在此之前,薛强开发和维护PRADO框架多年,他从这些年的经验和所得到的反馈中了解到,用户需要一个更容易、可扩展、更快速的基于PHP 5的框架,以满足应用程序开发人员不断增长的需求。
Yii正式发布于2008年10月,最初是alpha版本,与其他基于PHP的框架表现相比,令人印象深刻,立即引起非常积极的关注。2008年12月3日,Yii 1.0正式发布;2013年8月11日,发布稳定版本1.1.14;2014年4月13日,发布了Yii 2.0的beta测试版。本书中采用的是目前使用广泛且相对比较成熟的Yii 1.1.17版本。
Yii框架有一个不断成长的开发团队,团队部分成员见表2-1。
表2-1 开发团队中的部分成员
2.环境需求
要运行一个基于Yii框架的Web应用,需要有一个支持PHP 5.1.0或以上版本的Web服务器。
对于打算使用Yii的开发者来说,懂得面向对象编程(OOP)会非常有帮助,因为Yii是一个纯面向对象的框架。
3.特点
· 快速:Yii只加载需要的功能。它具有强大的缓存支持。
· 安全:Yii的标准是安全的。它包括了输入验证、输出过滤、SQL注入和跨站点脚本的预防。
· 专业:Yii可帮助用户开发清洁和可重用的代码。它遵循了MVC框架模式,确保了清晰分离逻辑层和表示层。
4.集多家所长
Yii在设计时借鉴和集成了很多其他著名Web编程框架和应用的思想。
· PRADO:这是Yii的思想的主要来源。Yii采用了它的基于部件和事件驱动的编程范式、数据库抽象层、模块应用框架、国际化和本地化,以及其他一些东西。
· Ruby on Rails:Yii继承了它的易于配置的特点。Yii还参考了它的活动记录设计模式的实现。
· jQuery:作为JavaScript框架的基础集成到Yii中。
· Symfony:Yii参考了它的过滤器设计及插件框架。
· Joomla:Yii参考了它的模块设计及消息传递体系。
2.1.2 优点
· Yii容易学习和使用。用户只需要知道PHP和面向对象编程,便可以很快上手,而不必事先去学习一种新的架构或者模板语言。
· 用Yii的开发速度非常之快,除框架本身之外,需要为应用所写的编码极少。并且具有高度的可重用性和可扩展性,是纯粹的面向对象的,也显著提高了Web应用开发速度。
· Yii中的一切都是独立的可被配置、可重用、可扩展的组件,并且是惰性加载(用到的才加载),运行速度非常快。更重要的是,Yii有着越来越多的扩展库。主要由使用者贡献出的组件组成,这可能有助于大大减少用户的开发时间。
· 有着丰富的功能。从MVC、DAO/ActiveRecord到主题化、国际化和本地化,Yii提供了几乎所有目前Web 2.0应用程序开发所需的功能。
· 具有完备的文档和开发手册,有助于学习和掌握所需要的任何信息。
· Yii一开始就精心设计,以适应复杂的Web应用开发。它不是一些项目的副产品或者第三方集成,而是融合了作者丰富的Web应用开发经验和其他热门Web框架及应用的优秀思想的结晶。
· 最重要的是,Yii是免费的,它遵循最新的BSD许可,确保了第三方开发也循序和BSD相兼容的许可。这意味着无论从法律上还是财务上来说,使用者都可以自由地使用Yii来开发任何一个开源的或者私有的应用。
2.1.3 性能
可以通过“Hello World”程序在同一计算机下运行的性能对比检测不同框架的性能。测试环境如下所示。
· 操作系统:RedHat Enterprise Linux Server Release 5.2。
· Web服务器:Apache httpd 2.0.40。
· 主存储器:2GB。
· PHP:5.2.6,禁用所有不必要的扩展。
· CPU:Intel Xeon 3.2GHz。
Yii是一个高性能的框架,表2-2展示了其与其他流行的PHP框架比较时的高效率。在表2-2中,“fetches/sec”代表“每秒查询次数”,这个数字越大,此框架的性能越高。在这个比较中,Yii可以达到原生PHP的32%,除了比原生PHP差一些,比其他框架都强不少。
表2-2 PHP框架性能比较
Yii如此快速是因为它广泛地使用“懒性加载”(lazy loading)技术。例如,直到第一次使用到这个类,才会包含进来;直到对象第一次访问,才会创造这个对象。
提示:为什么用“Hello World”?进行“Hello World”的测试主要是为了达到我们的目标,如找出每个框架的最小代价。很多人抱怨说应用程序“hello world”很没意义,因为真实世界中的应用程序经常需要涉及更复杂的任务,如数据库查询。这是不对的。实际上,尤其是在一些大规模的Web 2.0应用程序中,经常遇到的情况通常是相当地接近“Hello World”。例如,应用程序要响应AJAX请求并返回当前服务器的时间。页面有大部分内容在缓存,应用程序只需要抓取缓存的内容并显示。
2.1.4 应用案例
Yii是一个通用的Web编程框架,可以用于开发几乎所有的Web应用。它是轻量级的,而且具备成熟的缓存解决方案,特别适用于开发高流量的应用,如门户网站、论坛、内容管理系统和电子商务系统等。图2-1和图2-2是使用Yii构建的一些Web项目的经典案例。图2-3为后台管理页面。
图2-1 门诊预约系统首页
图2-2 渡手网站首页
图2-3 内容管理系统操作页面
除上述案例之外,还有很多互联网应用项目也使用了Yii框架技术,这里不再赘述。