yii1.1和yii2.0的区别是什么

发布时间 - 2019-11-04 00:00:00    点击率:
区别:1、Yii2.0完全拥抱Composer,yii1.1没有;2、Yii2.0几乎每一个核心类都引入了命名空间,且1.1版类名前缀 “C” 已经不再使用;3、Yii2.0把1.1中的CComponent类拆分成了两个类。

2.0 版框架是完全重写的,在 1.1 和 2.0 两个版本之间存在相当多差异。因此从 1.1 版升级并不像小版本间的跨越那么简单,通过本指南你将会了解两个版本间主要的不同之处。

安装

Yii 2.0 完全拥抱 Composer,它是事实上的 PHP 依赖管理工具。核心框架以及扩展的安装都通过 Composer 来处理。

PHP 需求

Yii 2.0 需要 PHP 5.4 或更高版本,该版本相对于 Yii 1.1 所需求的 PHP 5.2 而言有巨大的改进。因此在语言层面上有很多的值得注意的不同之处。下面是 PHP 层的主要变化汇总:

  • 命名空间

  • 匿名函数

  • 数组短语法 [...元素...] 用于取代 array(...元素...)

  • 视图文件中的短格式 echo 标签 =,自 PHP 5.4 起总会被识别并且合法,无论 short_open_tag 的设置是什么,可以安全使用。

  • SPL 类和接口

  • 延迟静态绑定

  • 日期和时间

  • Traits

  • intl Yii 2.0 使用 PHP 扩展 intl 来支持国际化的相关功能。

命名空间

Yii 2.0 里最明显的改动就数命名空间的使用了。几乎每一个核心类都引入了命名空间,比如 yii\web\Request。1.1 版类名前缀 “C” 已经不再使用。   (推荐学习:yii教程)

当前的命名方案与目录结构相吻合。例如,yii\web\Request 就表明对应的类文件是 Yii 框架文件夹下的 web/Request.php 文件。

有了 Yii 的类自动加载器,你可以直接使用全部核心类而不需要显式包含具体文件。

组件(Component)与对象(Object)

Yii 2.0 把 1.1 中的 CComponent 类拆分成了两个类:[[yii\base\Object]] 和 [[yii\base\Component]]。[[yii\base\Object|Object]] 类是一个轻量级的基类,你可以通过 getters 和 setters 来定义对象的属性。

[[yii\base\Component|Component]] 类继承自 [[yii\base\Object|Object]],同时进一步支持 事件 和 行为。

事件(Event)

在 Yii 1 中,通常通过定义 on 开头的方法(例如 onBeforeSave)来创建事件。而在 Yii 2 中,你可以使用任意的事件名了。同时通过调用 [[yii\base\Component::trigger()|trigger()]] 方法来触发相关事件:

$event = new \yii\base\Event;
$component->trigger($eventName, $event);

要给事件附加一个事件事件处理器,需要使用 [[yii\base\Component::on()|on()]] 方法:

$component->on($eventName, $handler);
// 解除事件处理器,使用 off 方法:
// $component->off($eventName, $handler);


# yii  # 你可以  # 成了  # 不同之处  # 是一个  # 有很多  # 而在  # 它是  # 而不  # 引入了  # 总会 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深入理解Android中的xmlns:tools属性  使用Dockerfile构建java web环境  如何用wdcp快速搭建高效网站?  nodejs redis 发布订阅机制封装实现方法及实例代码  Linux网络带宽限制_tc配置实践解析【教程】  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel怎么在Controller之外的地方验证数据  如何快速搭建FTP站点实现文件共享?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  三星网站视频制作教程下载,三星w23网页如何全屏?  jquery插件bootstrapValidator表单验证详解  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  高防服务器租用首荐平台,企业级优惠套餐快速部署  奇安信“盘古石”团队突破 iOS 26.1 提权  移动端脚本框架Hammer.js  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  IOS倒计时设置UIButton标题title的抖动问题  深圳网站制作的公司有哪些,dido官方网站?  Laravel如何使用Collections进行数据处理?(实用方法示例)  制作公司内部网站有哪些,内网如何建网站?  香港服务器租用每月最低只需15元?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何续费美橙建站之星域名及服务?  Java遍历集合的三种方式  如何在景安服务器上快速搭建个人网站?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  微信小程序 HTTPS报错整理常见问题及解决方案  如何在香港免费服务器上快速搭建网站?  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  jQuery 常见小例汇总  Android中AutoCompleteTextView自动提示  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何用狗爹虚拟主机快速搭建网站?  企业网站制作这些问题要关注  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何构建满足综合性能需求的优质建站方案?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何在 Pandas 中基于一列条件计算另一列的分组均值  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?