yii2.0是一款高性能,基于组件的php框架,用于快速开发现代Web应用程序。因为基于组件的框架结构和设计精巧的缓存支持,yii特别适合开发大型应用,如门户网站、论坛、内容管理系统(CMS)、电子商务项目和RESTful Web服务等。yii不是一场独角戏,它由一个强大的开发者团队提供支持,也有一个庞大的专家社区,持续不断地对yii的开发作出贡献。yii开发者团队始终对Web开发最新潮流和其他框架及项目中的最佳实践和特性保持密切关注,那些有意义的最佳实践及特性会被不定期的整合进核心框架中,并提供简单优雅的接口。
yii2.0是目前软件的最高版本,而1.1版是上代的老版本,现在处于维护状态。2.0版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器(Composer)、PHP 代码规范(PSR)、命名空间、Traits(特质)等等。yii2.0版代表了最新一代框架,是未来几年中我们的主要开发版本。
基本介绍
yii是一个PHP框架,用于开发各种类型的Web应用。Yii官方将其定义为高性能、基于组件的框架。
就个人的经验而言,总结yii具有以下特点:
一、Yii比较“潮”。
Yii开发团队一直关注业内Web开发的最新技术,很注意吸收当下最为流行的技术。 可以说,近年来Web开发中最潮的技术都可以在Yii身上或多或少的看到影子。 比如,刚刚开始的时候Yii带有明显的Ruby on Rails风格; 比如Yii2中刚刚实现的命名空间等PHP最新特性支持等。 一个跟得上潮流和趋势的框架,才具有吸引力和生命力,学习起来才有意思、有意义。
二、Yii比较“易”。
正如其名字的发音,Yii是一个比较易学、易用的框架。代码质量很高,有许多可以学习的地方。 注释清晰、文档丰富阅读代码难度不高。社区活跃,官方论坛有中文区,国内论坛人气也还OK,知识获取容易。 架构相对稳定,从Yii1.1到Yii2的变化看,许多原来的约定和沉淀的经验都还适用。
三、Yii比较“全”。
就Web开发而言,无论是哪种类型的应用、无论是哪个开发阶段的常见问题,Yii都有成熟、高效、可靠的解决方案。 对于典型的Web开发而言,这已经是足够了。比如,伪静态化、国际化、RESTful等,Yii都有提供编程的框架。 但是,从规模上来讲,Yii还算不上一个大型框架。 个人对其的评价是一个中型偏轻点的框架,对于绝大多数的应用开发而言,肯定是充分、够用的了。
四、Yii比较“快”。
Yii官方把运行效率作为一个重要的特点来宣传。从实际使用看,在诸多PHP框架中,确实效率上具有一定优势。 但个人认为这点其实不是最重要的特点。对于框架的使用者,也就是开发人员来讲,更重要的是开发效率。 由于Yii架构合理,Web开发中常用的思路和模式都可以很顺地套上使用。 在Web开发中经常遇到的一些细节上的问题,Yii也提供了许多现成解决方案,拿来就可以使用,非常高效、方便。 开发效率高,对于开发者、开发团队而言,更为重要。
要感谢Yii开发团队精益求精的不懈努力,为广大Web开发者创造了如此优秀的框架。 本人自Yii1.1起就开始接触并使用Yii了,由于工作和爱好关系,也接触过一些框架了。总的说,至今对Yii很满意, 最最心仪的是两点:学了Yii,就学到了许多当下最流行、最成熟的东西;开发起快,改进来快。
yii2.0安装教程如下
前提:非常重要,你的php版本必须是php5.4以上 1.首先需要下载应用模板,分为基础模板和高级应用模板,这里我以高级应用模板为例子 :
下载本站提供的的高级应用模板,或上官方下载
2.下载完之后解压放在www目录我是放在 D:\wamp\www\yii2\advanced
cmd dos命令进入这个D:\wamp\www\yii2\advanced下:
3.运行 php -r "readfile('https://getcomposer.org/installer');" | php
4.这是就在D:\wamp\www\yii2\advanced目录下面下载了一个composer.phar文件,有了这个文件就可以执行php composer.phar命令了,提示:
5.运行php composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta3"这个命令,这个命令式升级模板应用的,一定要执行,否则访问会出错,如果 报 Nothing to install or update这个错误,就跳过此步骤,无需更新了
6.准备所有插件!!非常重要,少了这步一切都会失败
执行命令:php composer.phar global require "fxp/composer-asset-plugin:1.0.0"
7.安装我们的yii2的应用:
执行命令:composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced ../yii2test 就会在上一层目录下生成yii2test应用
请注意,您可能会被提示安装过程中输入你的 GitHub 的用户名和密码。这是正常的。只要输入它们并继续。如果你没有git账号,注册一个就可以了,但是安装的时候可能需要退出cmd,重新操作。
8.最后一步:初始化我们的应用,初始化是在你创建的yii2test目录下 执行cmd init命令 选0 y
ok,这么我们的yii2的安装就完成了,进入测试目录:
localhost/yii2/yii2test/frontend/web/index.php
会看到如下界面:
这就表明的你的yii2.0安装成功了,一定要记住你的php版本是php5.4以上的!
yii2.0的亮点
yii有两个最主要的版本:Yii1.1和Yii2.0。Yii1.1是老的版本,在写这本书时,最新版本号是1.1.15。 Yii1.1现在已经不再进行新的开发了,官方只是进行维护,更新安全漏洞等,不会再有新的功能特性的引入。 而Yii2.0是在Yii1.1的基础上完全推倒重新写的一个框架,吸收了许多当前最新的技术和开发中的主流约定,是最新一代Web开发框架的代表。下面简单介绍yii2.0的一些比较突出的特点:
1、运用了PHP命名空间、Trait、 PSR标准 、Composer和Bower包管理器, 等新技术新标准。
2、实现了 依赖注入和依赖注入容器 以及 服务定位器(Service Locator) 等新架构新模式。
3、Yii2.0格外重视安全性,采取一系列手段有效防止SQL注入、XSS攻击、CSRF攻击、cookie篡改等。
广泛支持各类SQL和NOSQL数据库,高效实现了Active Record等数据库查询、操作界面,提供数据库迁移、复制、 读写分离等功能。
4、只需极少量的代码就可以实现完全符合标准的RESTful API。
5、支持各种粒度、介质的缓存机制。
6、提供多种认证和授权手段基于cookie和基于令牌的认证,RBAC等权限控制手段,支持OpenID,OAuth1,OAuth2等。
7、支持Bootstrap,jQuery UI,提供了丰富的Widget挂件供使用。
8、完善的国际化支持,提供符合 ICU标准 的时间、复数等格式化工具和消息翻译、视图翻译等功能。
9、除了支持Twig和Smarty 2个主流的PHP模版引擎外,开发者还可以自己写扩展支持其他引擎。
10、为苦命码农提供了 Yii调试工具条 和 Gii代码生成器 以及 文档生成器 等高效开发工具。
11、集成了 Codeception 和 Faker,并与DB Migration相结合,提供了一个fixture框架,方便测试开发。
12、提供了一个简单应用模板和高级应用模板,适用于不同的开发场景,都可以帮助开发者尽快搭建起自己的应用。
yii和其他框架相比呢?
1、和其他 PHP 框架类似,yii实现了 MVC(Model-View-Controller)设计模式并基于该模式组织代码。
2、Yii 的代码简洁优雅,这是yii的编程哲学。它永远不会为了要迎合某个设计模式而对代码进行过度的设计。
3、yii是一个全栈框架,提供了大量久经考验,开箱即用的特性,例如:对关系型和 NoSQL 数据库都提供了查询生成器(QueryBuilders)和 ActiveRecord;RESTful API 的开发支持;多层缓存支持,等等。
4、Yii 非常易于扩展。你可以自定义或替换几乎任何一处核心代码。你还会受益于它坚实可靠的扩展架构,使用、再开发或再发布扩展。
5、高性能始终是 Yii 的首要目标之一。
更新日志
v2.0.32版本
错误 #12539:yii\filters\ContentNegotiator现在在内容类型协商失败时生成 406“不可接受”而不是 415“不支持的媒体类型
错误 #17037:修复数据来自MultipartFormDataParser(sup-ham)时上传的文件保存方法
错误 #17300:使用通配符修复类级事件处理 (Toma91)
错误 #17635:修复 MSSQL 的 varbinary 数据处理(toatall)
错误 #17744:修复了一个错误,将默认表达式设置为不正确defaultValue的 AR 列CURRENT_TIMESTAMP(x)(MySQL >= 5.6.4) (bizley)
错误 #17749:修复 PHP 7.0+ (kamarton) 中目标崩溃时的记录器调度器行为
错误 #17755:修复trustedHosts设置为格式的Web 请求错误['10.0.0.1' => ['X-Forwarded-For']](书生红)
错误#17760:修正JSON::encode()了\DateTimeInterfacePHP 7.4(samdark)下
错误 #17762:PHP 7.4:删除将 PHP 错误转换为异常的特殊条件,如果它们发生在__toString()调用内部(rob006)
错误 #17766:在注册新事件绑定之前删除先前的 PJAX 事件绑定 (samdark)
错误 #17767:使Formatter::formatNumber方法受保护(TheCodeholic)
错误 #17771:迁移/刷新没有返回退出代码(samdark)
错误 #17793:修复(brandonkelly) 中对空data属性值的不一致处理yii\helpers\BaseHtml::renderTagAttributes()
错误 #17803:修复ErrorHandler取消注册和注册以仅在适用时更改全局状态(Sammousa)
Enh #17729:路径别名支持已添加到yii\web\UploadFile::saveAs()(sup-ham)
Enh #17792:添加aria对yii\helpers\BaseHtml::renderTagAttributes()(brandonkelly)属性的支持