區(qū)別:1、Yii2.0完全擁抱Composer,yii1.1沒有;2、Yii2.0幾乎每一個核心類都引入了命名空間,且1.1版類名前綴 “C” 已經(jīng)不再使用;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 層的主要變化匯總:
-
命名空間
-
匿名函數(shù)
-
數(shù)組短語法 […元素…] 用于取代 array(…元素…)
-
視圖文件中的短格式 echo 標簽 =,自 PHP 5.4 起總會被識別并且合法,無論 short_open_tag 的設(shè)置是什么,可以安全使用。
-
SPL 類和接口
-
延遲靜態(tài)綁定
-
日期和時間
-
Traits
-
intl Yii 2.0 使用 PHP 擴展 intl 來支持國際化的相關(guān)功能。
命名空間
Yii 2.0 里最明顯的改動就數(shù)命名空間的使用了。幾乎每一個核心類都引入了命名空間,比如 yiiwebRequest。1.1 版類名前綴 “C” 已經(jīng)不再使用。? ?(推薦學習:yii教程)
當前的命名方案與目錄結(jié)構(gòu)相吻合。例如,yiiwebRequest 就表明對應的類文件是 Yii 框架文件夾下的 web/Request.php 文件。
有了 Yii 的類自動加載器,你可以直接使用全部核心類而不需要顯式包含具體文件。
組件(Component)與對象(Object)
Yii 2.0 把 1.1 中的 CComponent 類拆分成了兩個類:[[yiibaseObject]] 和 [[yiibaseComponent]]。[[yiibaseObject|Object]] 類是一個輕量級的基類,你可以通過 getters 和 setters 來定義對象的屬性。
[[yiibaseComponent|Component]] 類繼承自 [[yiibaseObject|Object]],同時進一步支持 事件 和 行為。
事件(Event)
在 Yii 1 中,通常通過定義 on 開頭的方法(例如 onBeforeSave)來創(chuàng)建事件。而在 Yii 2 中,你可以使用任意的事件名了。同時通過調(diào)用 [[yiibaseComponent::trigger()|trigger()]] 方法來觸發(fā)相關(guān)事件:
$event?=?new?yiibaseEvent; $component->trigger($eventName,?$event);
要給事件附加一個事件事件處理器,需要使用 [[yiibaseComponent::on()|on()]] 方法:
$component->on($eventName,?$handler); //?解除事件處理器,使用?off?方法: //?$component->off($eventName,?$handler);