yii

yii

开发大型Web应用
Yii是一个高性能的,适用于开发WEB2.0应用的PHP框架。Yii自带了丰富的功能,包括MVCDAO/ActiveRecordI18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。[1]其创始人是薛强,于2008年1月1日开始开发。2014年10月12日发布稳定版本2.0.0。
    软件名称: 软件平台: 软件语言: 开发商: 软件授权: 软件版本: 软件大小: 中文名:Yii 外文名:Yii Framework 本质:PHP 框架 用途:开发大型Web应用 编写:OOP编写 创始人:薛强

特性

Yii几乎拥有了当今Web 2.0应用发展的全部特性。下面是这些特性的一个简短的清单。

模型-视图-控制器(MVC)设计模式:Yii在WEB编程中采用这一成熟的技术从而可以更好的将逻辑层和表现层分开。

数据库访问对象(DAO)和Active Record:Yii允许开发者模型数据库中的数据对象,从而减少他们在写很长和重复的SQL语句上的精力。

与jQuery整合:作为最流行的JavaScript框架之一,jQuery可以编写高效而灵活的JavaScript接口。

表单输入和验证:YII使得收集表单输入非常容易和安全。Yii拥有一套确保数据的有效性的验证器,它也有辅助方法和部件,显示验证失败时的错误。

Web 2.0部件:由jQuery的支持,YII配备了一套Web 2.0的部件,如自动完成输入字段,TreeView等等。

身份验证和授权:Yii具有内置的身份验证支持。它也支持通过分层的基于角色的访问控制(RBAC)的授权。

主题:它能够瞬间改变一个Yii应用的视图。

Web服务:Yii支持自动生成复杂的WSDL服务规范和管理Web服务请求处理。

国际化(I18N)和本地化(L10N):Yii支持消息转换,日期和时间格式,数字格式和界面本地化。

分层缓存方案:Yii支持数据缓存,页面缓存,片段缓存和动态内容。缓存的存储介质,可以轻松地更改而不触及应用程序代码。

错误处理和日志记录:错误的处理很好的呈现出来,日志信息可以分类,过滤并分配到不同的位置。

安全:Yii配备了许多安全的措施,以帮助安全的Web应用程序,以防止网络攻击。这些措施包括跨站点脚本(XSS)预防,跨站点请求伪造(CSRF)预防,Cookie篡改预防等。

符合XHTML:Yii的组件和命令行工具生成的代码符合XHTML标准。

自动代码生成:Yii提供了可以自动生成的代码的工具,根据你的需要,例如生成一个程序骨架,CRUD应用等等。

完全面向对象:Yii框架坚持严格的面向对象编程范式。它没有定义任何全局函数或变量。而且,它定义的类层次结构允许最大的可重用性和定制。

友好的使用第三方代码:Yii精心设计让它第三方代码非常好的工作。例如,你可以在你的Yii应用程序中使用PEAR或Zend Framework的代码。

详细的文档:每一个单一的方法或属性都非常清楚的记录着。同时提供了一个全面的教程和一些新手教程。

扩展库:Yii提供了一个组成用户提供组件的一个扩展库,这使得上述功能列表是永无止境的。

性能

Yii是一个高性能的框架,以下的图表展示了与其他流行的PHP框架比较下Yii的高效率。在这个图表中,RPS代表“每秒请求”,描述了此框架每秒执行多少个请求。这个数字越大,此框架的性能越高,我们可以看到,在这个比较中 Yii 胜过其他框架。The performance advantage of Yii is especially significant when the widely used APC extension is enabled.

Performance alone is not the whole story (otherwise we should all use plain HTML or PHP). With such superior performance, Yii still provides a very rich feature setwhich can greatly improve your development efficiency.

为什么Yii如此之快

Yii如此快速是因为它广泛地使用lazy loading技术。比如, 直到第一次使用到这个类,才会包含进来;直到对象第一次访问,才会创造这个对象。Other frameworks suffer from the performance hit because they would enable a functionality (e.g. DB connection, user session) no matter it is used or not during a request.

标准设置

下面我们解释怎样设计基准应用并且得到上面的RPS结果.

基准请求

Since our goal is to compare the minimal overhead of each framework, the benchmark application for each framework should be the simplest one. We choose to display a "Hello World" text string by placing an echo statement in the default action of each application. Any additional framework features (e.g. session) are disabled to ensure fairness of the comparison. To obtain a copy of the benchmark applications, please check out the phpmark project.

为什么用“Hello World”

我们做“hello world”的测试主要是为了达到我们的目标,如:找出每个框架地最小代价。很多人抱怨说应用程序“hello world”很没意义,因为在真实世界的应用程序经常需要去涉及更复杂的任务,比如数据库查询。这是不对的。实际上,尤其是在一些大规模的web2.0应用程序中,我们经常遇到的情况通常是相当地接近“hello world”。例如:应用程序要响应ajax请求返回当前服务器的时间。页面有大部分内容在缓存,应用程序只需要抓取缓存的内容并显示之。

另一个用“hello world”的原因是当引用更复杂(如:数据库查询)的特征时,对照的清晰将很难保证。例如:框架可以在数据库查询执行得非常有效率,但缺少缓存方案。当另一个框架在数据库查询上稍慢,却有高级的缓存特征来缓和系统损耗。总而言之有包含了太多的因素来进行清晰的对比。

标准工具和环境

用ApacheBench工具的指令“ab –t 30 -c 10 URL”来获取RPS编号(如:在并发级数10运行test 30秒)。为了获得每个框架的编号,我们先停止再启动Apache WEB服务器来避免干扰。还要运行测试程序几次来“预热”测试环境。在phpmark project中,有个叫benchmark. sh的shell script使基准程序自动化。

版本

Yii目前有两个主要的版本: 2.0 和 1.1。yii 最先发布稳定版本为:1.1.14 (2013年8月11日发布),yii 最新发布稳定版本为:2.0.0 (发布于 2014年10月12日发布)。

开发团队

成员

Александр Макаров (samdark)

俄罗斯

2010年3月加入

职责:核心框架开发

Jonah Turnquist (jonah)

美国加利福尼亚

2009年9月加入

职责:开发官方的扩展库

Sebastián Thierer (sebas)

阿根廷

2009年9月加入

职责:开发官方的扩展库和核心框架的发布

Wei Zhuo (wei)

澳大利亚悉尼

2008年9月加入

职责:核心框架的开发和项目的网站

Qiang Xue (qiang)

美国华盛顿

创建者

职责:参与所有事物

历史成员

István Beregszászi (pestaa)

匈牙利

2009年9月加入

职责:维护论坛和核心框架的发布

相关词条

相关搜索

其它词条