Qiang Xue
12 years ago
2 changed files with 164 additions and 1 deletions
@ -0,0 +1,163 @@
|
||||
Upgrading from Yii 1.1 |
||||
====================== |
||||
|
||||
In this chapter, we list the major changes introduced in Yii 2.0 since version 1.1. |
||||
We hope this list will make it easier for you to upgrade from Yii 1.1 and quickly |
||||
master Yii 2.0 based on your existing Yii knowledge. |
||||
|
||||
|
||||
Component and Object |
||||
-------------------- |
||||
|
||||
Yii 2.0 breaks the `CComponent` class in 1.1 into two classes: `Object` and `Component`. |
||||
The `Object` class is a lightweight base class that allows defining class properties |
||||
via getters and setters. The `Component` class extends from `Object` and supports |
||||
the event feature and the behavior feature. |
||||
|
||||
If your class does not need the event or behavior feature, you should consider using |
||||
`Object` as the based class. This is usually the case for classes that represent basic |
||||
data structures. |
||||
|
||||
|
||||
Object Configuration |
||||
-------------------- |
||||
|
||||
The `Object` class introduces a convention for configuring objects. In general, any |
||||
descendant class of `Object` should follow this convention when declaring a constructor: |
||||
|
||||
~~~ |
||||
class MyClass extends \yii\Object |
||||
{ |
||||
public function __construct($param1, $param2, $config = array()) |
||||
{ |
||||
// ... |
||||
parent::__construct($config); |
||||
} |
||||
|
||||
public function init() |
||||
{ |
||||
parent::init(); |
||||
// ... at this point, all configurations have been applied ... |
||||
} |
||||
} |
||||
~~~ |
||||
|
||||
In descendant classes, you can override the `init()` method to do initialization work |
||||
that should be done after all configurations are applied. |
||||
|
||||
By following this convention, you will be able to use the powerful object creation method via: |
||||
|
||||
~~~ |
||||
$object = Yii::createObject(array( |
||||
'class' => 'MyClass', |
||||
'property1' => 'abc', |
||||
'property2' => 'cde', |
||||
), $param1, $param2); |
||||
~~~ |
||||
|
||||
|
||||
Events |
||||
------ |
||||
|
||||
There is no longer the need to define an `on`-method in order to define an event in Yii 2.0. |
||||
Instead, you can use whatever event names. To attach a handler to an event, you should |
||||
use the `on` method now: |
||||
|
||||
~~~ |
||||
$component->on($eventName, $handler); |
||||
// To detach the handler, use: |
||||
// $component->off($eventName, $handler); |
||||
~~~ |
||||
|
||||
When you attach a handler, you can now associate it with some parameters which can be later |
||||
accessed via the event parameter by the handler: |
||||
|
||||
~~~ |
||||
$component->on($eventName, $handler, $params); |
||||
~~~ |
||||
|
||||
Because of this change, you can now use "global" events. Simply trigger and attach handlers to |
||||
an event of the application instance: |
||||
|
||||
~~~ |
||||
Yii::$app->on($eventName, $handler); |
||||
.... |
||||
// this will trigger the event and cause $handler to be invoked. |
||||
Yii::$app->trigger($eventName); |
||||
~~~ |
||||
|
||||
|
||||
View |
||||
---- |
||||
|
||||
Yii 2.0 introduces a `View` class to represent the view part in the MVC pattern. |
||||
It can be configured globally through the "view" application component. It is also |
||||
accessible in any view file via `$this`. This is one of the biggest changes compared to 1.1: |
||||
**`$this` in a view file no longer refers to the controller or widget object.** |
||||
It refers to the view object that is used to render the view file. To access the controller |
||||
or the widget object, you have to use `$this->context` now. |
||||
|
||||
Because you can access the view object through the "view" application component, |
||||
you can now render a view file like the following anywhere in your code, not necessarily |
||||
in controllers or widgets: |
||||
|
||||
~~~ |
||||
$content = Yii::$app->view->renderFile($viewFile, $params); |
||||
// You can also explicitly create a new View instance to do the rendering |
||||
// $view = new View; |
||||
// $view->renderFile($viewFile, $params); |
||||
~~~ |
||||
|
||||
Also, there is no more `CClientScript` in Yii 2.0. The `View` class has taken over its role |
||||
with significant improvements. For more details, please see the "assets" subsection. |
||||
|
||||
TBD: built-in renderers |
||||
|
||||
Models |
||||
------ |
||||
|
||||
Controllers |
||||
----------- |
||||
|
||||
Themes |
||||
------ |
||||
|
||||
Console Applications |
||||
-------------------- |
||||
|
||||
I18N |
||||
---- |
||||
|
||||
Behaviors |
||||
--------- |
||||
|
||||
TBD |
||||
|
||||
Action filters are replaced by behaviors (`ActiionFilter`). |
||||
|
||||
|
||||
Assets |
||||
------ |
||||
|
||||
Static Helpers |
||||
-------------- |
||||
|
||||
`ActiveForm` |
||||
------------ |
||||
|
||||
|
||||
Query Builder |
||||
------------- |
||||
|
||||
|
||||
ActiveRecord |
||||
------------ |
||||
|
||||
User and Identity |
||||
----------------- |
||||
|
||||
URL Management |
||||
-------------- |
||||
|
||||
Response |
||||
-------- |
Loading…
Reference in new issue