mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-16 07:11:19 +08:00
Update intro-upgrade-from-v1.md
This commit is contained in:
@ -13,7 +13,7 @@
|
||||
|
||||
|
||||
安装
|
||||
------------
|
||||
---
|
||||
|
||||
Yii 2.0 完全拥抱 [Composer](https://getcomposer.org/),它是事实上的 PHP 依赖管理工具。
|
||||
核心框架以及扩展的安装都通过 Composer 来处理。想要了解更多如何安装 Yii 2.0 请参阅本指南的
|
||||
@ -23,7 +23,7 @@ Yii 2.0 完全拥抱 [Composer](https://getcomposer.org/),它是事实上的 P
|
||||
|
||||
|
||||
PHP 需求
|
||||
----------------
|
||||
-------
|
||||
|
||||
Yii 2.0 需要 PHP 5.4 或更高版本,该版本相对于 Yii 1.1 所需求的 PHP 5.2 而言有巨大的改进。
|
||||
因此在语言层面上有很多的值得注意的不同之处。
|
||||
@ -54,7 +54,7 @@ Yii 2.0 里最明显的改动就数命名空间的使用了。几乎每一个核
|
||||
|
||||
|
||||
组件(Component)与对象(BaseObject)
|
||||
--------------------
|
||||
---------------------------------
|
||||
|
||||
Yii 2.0 把 1.1 中的 `CComponent` 类拆分成了两个类:[[yii\base\Object]] 和 [[yii\base\Component]]。
|
||||
[[yii\base\Object|Object]] 类是一个轻量级的基类,你可以通过 getters 和 setters 来定义[对象的属性](concept-properties.md)。
|
||||
@ -67,7 +67,7 @@ Yii 2.0 把 1.1 中的 `CComponent` 类拆分成了两个类:[[yii\base\Object
|
||||
|
||||
|
||||
对象的配置
|
||||
--------------------
|
||||
---------
|
||||
|
||||
[[yii\base\Object|Object]] 类引入了一种统一对象配置的方法。
|
||||
所有 [[yii\base\Object|Object]] 的子类都应该用以下方法声明它的构造方法(如果需要的话),
|
||||
@ -112,7 +112,7 @@ $object = Yii::createObject([
|
||||
|
||||
|
||||
事件(Event)
|
||||
------
|
||||
-----------
|
||||
|
||||
在 Yii 1 中,通常通过定义 `on` 开头的方法(例如 `onBeforeSave`)来创建事件。
|
||||
而在 Yii 2 中,你可以使用任意的事件名了。同时通过调用 [[yii\base\Component::trigger()|trigger()]] 方法来触发相关事件:
|
||||
@ -153,7 +153,7 @@ Yii 2.0 将路径别名的应用扩大至文件/目录路径和 URL。Yii 2.0
|
||||
|
||||
|
||||
视图(View)
|
||||
-----
|
||||
----------
|
||||
|
||||
Yii 2 中视图最明显的改动是视图内的特殊变量 `$this` 不再指向当前控制器或小部件,
|
||||
而是指向**视图**对象,它是 2.0 中引入的全新概念。**视图**对象为 [[yii\web\View]] 的实例,
|
||||
@ -175,7 +175,7 @@ echo $this->render('_item', ['item' => $item]);
|
||||
|
||||
|
||||
模型(Model)
|
||||
------
|
||||
-----------
|
||||
|
||||
Yii 2.0 使用 [[yii\base\Model]] 作为模型基类,类似于 1.1 的 `CModel` 。
|
||||
`CFormModel` 被完全弃用了,现在要创建表单模型类,可以通过继承 [[yii\base\Model]] 类来实现。
|
||||
@ -231,7 +231,7 @@ public function actionView($id)
|
||||
|
||||
|
||||
小部件(Widget)
|
||||
-------
|
||||
-------------
|
||||
|
||||
Yii 2.0 使用 [[yii\base\Widget]] 作为小部件基类,类似于 1.1 的 `CWidget`。
|
||||
|
||||
@ -259,7 +259,7 @@ ActiveForm::end();
|
||||
|
||||
|
||||
主题(Theme)
|
||||
------
|
||||
-----------
|
||||
|
||||
2.0 主题的运作方式跟以往完全不同了。它们现在基于**路径映射机制**,该机制会把一个源视图文件的路径映射到一个主题视图文件路径。
|
||||
举例来说,如果路径映射为 `['/web/views' => '/web/themes/basic']`,
|
||||
@ -274,7 +274,7 @@ ActiveForm::end();
|
||||
|
||||
|
||||
控制台应用(Console Application)
|
||||
--------------------
|
||||
------------------------------
|
||||
|
||||
控制台应用现在如普通的 Web 应用程序一样,由控制器组成,
|
||||
控制台的控制器继承自 [[yii\console\Controller]],类似于 1.1 的 `CConsoleCommand`。
|
||||
@ -290,7 +290,7 @@ Yii 2.0 支持基于代码注释自动生成相的关命令行帮助(help)
|
||||
|
||||
|
||||
国际化(I18N)
|
||||
----
|
||||
------------
|
||||
|
||||
Yii 2.0 移除了原来内置的日期格式器和数字格式器,为了支持 [PECL intl PHP module](http://pecl.php.net/package/intl)(PHP 的国际化扩展)的使用。
|
||||
|
||||
@ -302,7 +302,7 @@ Yii 2.0 移除了原来内置的日期格式器和数字格式器,为了支持
|
||||
|
||||
|
||||
动作过滤器(Action Filters)
|
||||
--------------
|
||||
-------------------------
|
||||
|
||||
操作的过滤现在通过行为(behavior)来实现。要定义一个新的,自定义的过滤器,请继承 [[yii\base\ActionFilter]] 类。
|
||||
要使用一个过滤器,需要把过滤器类作为一个 `behavior` 绑定到控制器上。
|
||||
@ -326,7 +326,7 @@ public function behaviors()
|
||||
|
||||
|
||||
前端资源(Assets)
|
||||
------
|
||||
---------------
|
||||
|
||||
Yii 2.0 引入了一个新的概念,称为**资源包**(Asset Bundle),以代替 1.1 的脚本包概念。
|
||||
|
||||
@ -340,7 +340,7 @@ Yii 2.0 引入了一个新的概念,称为**资源包**(Asset Bundle),
|
||||
|
||||
|
||||
助手类(Helpers)
|
||||
-------
|
||||
---------------
|
||||
|
||||
Yii 2.0 很多常用的静态助手类,包括:
|
||||
|
||||
@ -352,8 +352,8 @@ Yii 2.0 很多常用的静态助手类,包括:
|
||||
|
||||
请参考[助手一览](helper-overview.md) 章节来了解更多。
|
||||
|
||||
表单
|
||||
-----
|
||||
表单(Forms)
|
||||
-----------
|
||||
|
||||
Yii 2.0 引进了**表单栏(field)**的概念,用来创建一个基于 [[yii\widgets\ActiveForm]] 的表单。
|
||||
一个表单栏是一个由标签、输入框、错误消息(可能还有提示文字)组成的容器,
|
||||
@ -374,7 +374,7 @@ Yii 2.0 引进了**表单栏(field)**的概念,用来创建一个基于 [[
|
||||
|
||||
|
||||
查询生成器(Query Builder)
|
||||
-------------
|
||||
------------------------
|
||||
|
||||
Yii 1.1 中,查询语句的生成分散在多个类中,包括 `CDbCommand`,`CDbCriteria` 以及 `CDbCommandBuilder`。
|
||||
Yii 2.0 以 [[yii\db\Query|Query]] 对象的形式表示一个数据库查询,
|
||||
@ -398,7 +398,7 @@ $rows = $command->queryAll();
|
||||
|
||||
|
||||
活动记录(Active Record)
|
||||
-------------
|
||||
----------------------
|
||||
|
||||
Yii 2.0 的[活动记录](db-active-record.md)改动了很多。
|
||||
两个最显而易见的改动分别涉及查询语句的生成(query building)和关联查询的处理(relational query handling)。
|
||||
@ -434,6 +434,7 @@ class Customer extends \yii\db\ActiveRecord
|
||||
```php
|
||||
$orders = $customer->getOrders()->andWhere('status=1')->all();
|
||||
```
|
||||
|
||||
当贪婪加载一段关联关系时,Yii 2.0 和 1.1 的运作机理并不相同。
|
||||
具体来说,在 1.1 中使用一条 JOIN 语句同时查询主表和关联表记录。
|
||||
在 Yii 2.0 中会使用两个没有 JOIN 的 SQL 语句:第一条语句取回主表记录,
|
||||
@ -525,10 +526,10 @@ Yii 2.0 的 URL 管理跟 1.1 中很像。一个主要的改进是现在的 URL
|
||||
|
||||
请参考[URL 解析和生成](runtime-url-handling.md) 章节,以了解更多细节。.
|
||||
|
||||
An important change in the naming convention for routes is that camel case names of controllers
|
||||
and actions are now converted to lower case where each word is separated by a hypen, e.g. the controller
|
||||
id for the `CamelCaseController` will be `camel-case`.
|
||||
See the section about [controller IDs](structure-controllers.md#controller-ids) and [action IDs](structure-controllers.md#action-ids) for more details.
|
||||
一个重要变化是路由命名的约定,
|
||||
现在的控制器和动作的驼峰命名会被转换成小写字母,
|
||||
其中每个单词由一个专有的连字号分隔,例如,`CamelCaseController` 将为 `camel-case`。
|
||||
有关更多详细信息,请参阅关于 [controller IDs](structure-controllers.md#controller-ids) 和 [action IDs](structure-controllers.md#action-ids) 的部分。
|
||||
|
||||
|
||||
同时使用 Yii 1.1 和 2.x
|
||||
|
Reference in New Issue
Block a user