Commit 8fc14a8a by Kevin LEVRON

Update intro-upgrade-from-v1.md

parent d706225a
Mise à jour depuis la version 1.1 Mise à jour depuis la version 1.1
================================= =================================
Il y a beaucoup de différences entre les versions 1.1 et 2.0 de Yii, le framework ayant été complètement réécrit pour la 2.0. Il y a beaucoup de différences entre les versions 1.1 et 2.0 de Yii, le framework ayant été complètement réécrit pour
En conséquence, la mise à jour depuis la version 1.1 n'est pas aussi triviale que la mise à jour entre deux versions mineures. Dans ce guide, vous la 2.0. En conséquence, la mise à jour depuis la version 1.1 n'est pas aussi triviale que la mise à jour entre deux
trouverez les principales différences entre les deux versions. versions mineures. Dans ce guide, vous trouverez les principales différences entre les deux versions.
Si vous n'avez pas utilisé Yii 1.1 avant, vous pouvez ignorer cette section et passer directement à la partie "[Mise en route] (start-installation.md)". Si vous n'avez pas utilisé Yii 1.1 avant, vous pouvez ignorer cette section et passer directement à la partie
"[Mise en route] (start-installation.md)".
Merci de noter que Yii 2.0 introduit plus de nouvelles fonctionnalités que celles abordées ici. Il est fortement recommandé Merci de noter que Yii 2.0 introduit plus de nouvelles fonctionnalités que celles abordées ici. Il est fortement
de lire tout le guide de référence pour en apprendre davantage. Il y a des chances que recommandé de lire tout le guide de référence pour en apprendre davantage. Il y a des chances que certaines
certaines fonctionnalités, que vous aviez préalablement développées pour vous, fassent désormais partie du code du noyau. fonctionnalités, que vous aviez préalablement développées pour vous, fassent désormais partie du code du noyau.
Installation Installation
...@@ -17,7 +18,7 @@ Installation ...@@ -17,7 +18,7 @@ Installation
Yii 2.0 exploite pleinement [Composer] (https://getcomposer.org/), le gestionnaire de paquet PHP. L'installation Yii 2.0 exploite pleinement [Composer] (https://getcomposer.org/), le gestionnaire de paquet PHP. L'installation
du framework, ainsi que des extensions, sont gérées par Composer. Merci de lire la partie du framework, ainsi que des extensions, sont gérées par Composer. Merci de lire la partie
[Starting from Basic App](start-basic.md) pour apprendre comment installer Yii 2.0. Si vous voulez [Installer Yii](start-installation.md) pour apprendre comment installer Yii 2.0. Si vous voulez
créer de nouvelles extensions, ou rendre vos extensions existantes 1.1 compatibles 2.0, merci de lire créer de nouvelles extensions, ou rendre vos extensions existantes 1.1 compatibles 2.0, merci de lire
la partie [Créer des extensions](extend-creating-extensions.md) de ce guide. la partie [Créer des extensions](extend-creating-extensions.md) de ce guide.
...@@ -138,7 +139,7 @@ Alias ...@@ -138,7 +139,7 @@ Alias
Yii 2.0 étend l'utilisation des alias aux fichiers/répertoires et aux URL. Yii 2.0 impose maintenant Yii 2.0 étend l'utilisation des alias aux fichiers/répertoires et aux URL. Yii 2.0 impose maintenant
aux alias de commencer par le caractère `@`, pour différencier les alias de fichiers/répertoires ou URL. aux alias de commencer par le caractère `@`, pour différencier les alias de fichiers/répertoires ou URL.
Par exemple, l'alias `@yii` fait référence au répertoire d'installation de Yii. Les alias ​​sont Par exemple, l'alias `@yii` fait référence au répertoire d'installation de Yii. Les alias ??sont
supportés dans la plupart du code de Yii. Par exemple, [[yii\caching\FileCache::cachePath]] peut prendre supportés dans la plupart du code de Yii. Par exemple, [[yii\caching\FileCache::cachePath]] peut prendre
à la fois un alias et un chemin de répertoire normal. à la fois un alias et un chemin de répertoire normal.
...@@ -397,23 +398,22 @@ Merci de lire la partie [Constructeur de requête](db-query-builder.md) pour plu ...@@ -397,23 +398,22 @@ Merci de lire la partie [Constructeur de requête](db-query-builder.md) pour plu
Active Record Active Record
------------- -------------
Yii 2.0 introduces a lot of changes to [Active Record](db-active-record.md). The two most obvious ones involve Yii 2.0 introduit beaucoup de modifications au modèle [Active Record](db-active-record.md). Les deux plus évidentes concernent la construction des requêtes et la manipulation de requêtes relationnelles.
query building and relational query handling.
The `CDbCriteria` class in 1.1 is replaced by [[yii\db\ActiveQuery]] in Yii 2. That class extends from [[yii\db\Query]], and thus La classe `CDbCriteria` en 1.1 est remplacée par [[yii\db\ActiveQuery]] dans Yii 2. Cette classe étend [[yii\db\Query]],
inherits all query building methods. You call [[yii\db\ActiveRecord::find()]] to start building a query: et hérite donc de toutes les méthodes de construction de requête. Pour commencer à construire une requête il suffit d'utiliser [[yii\db\ActiveRecord::find()]] :
```php ```php
// To retrieve all *active* customers and order them by their ID: // Pour récupérer tous les clients *actifs* et les trier selon leur identifiant
$customers = Customer::find() $customers = Customer::find()
->where(['status' => $active]) ->where(['status' => $active])
->orderBy('id') ->orderBy('id')
->all(); ->all();
``` ```
To declare a relation, simply define a getter method that returns an [[yii\db\ActiveQuery|ActiveQuery]] object. Pour déclarer une relation, il suffit de définir un accesseur qui renvoie un objet [[yii\db\ActiveQuery|ActiveQuery]].
The property name defined by the getter represents the relation name. For example, the following code declares Le nom de la propriété définie par l'accesseur représente le nom de la relation. Par exemple, le code suivant déclare
an `orders` relation (in 1.1, you would have to declare relations in a central place `relations()`): une relation `orders` (en 1.1, vous aviez à déclarer les relations dans la méthode `relations()`):
```php ```php
class Customer extends \yii\db\ActiveRecord class Customer extends \yii\db\ActiveRecord
...@@ -425,28 +425,30 @@ class Customer extends \yii\db\ActiveRecord ...@@ -425,28 +425,30 @@ class Customer extends \yii\db\ActiveRecord
} }
``` ```
Now you can use `$customer->orders` to access a customer's orders from the related table. You can also use the following code Maintenant vous pouvez utiliser `$customer->orders` pour accéder aux commandes du client depuis la table liée.
to perform an on-the-fly relational query with a customized query condition: Vous pouvez aussi utiliser le code suivant pour effectuer une requête relationnelle à la volée avec une condition
personnalisée :
```php ```php
$orders = $customer->getOrders()->andWhere('status=1')->all(); $orders = $customer->getOrders()->andWhere('status=1')->all();
``` ```
When eager loading a relation, Yii 2.0 does it differently from 1.1. In particular, in 1.1 a JOIN query Lors du chargement anticipé (*eager loading*) d'une relation, Yii 2.0 fonctionne différemment de la version 1.1.
would be created to select both the primary and the relational records. In Yii 2.0, two SQL statements are executed En particulier avec Yii 1.1, une jointure était créée pour sélectionner à la fois l'enregistrement principal et les
without using JOIN: the first statement brings back the primary records and the second brings back the relational enregistrements liés. Avec Yii 2.0, deux instructions SQL sont exécutées sans utiliser de jointure : la première
records by filtering with the primary keys of the primary records. récupère les enregistrements principaux et la seconde récupère les enregistrements liés en filtrant selon les clés
primaires des enregistrements principaux.
Instead of returning [[yii\db\ActiveRecord|ActiveRecord]] objects, you may chain the [[yii\db\ActiveQuery::asArray()|asArray()]] Au lieu de retourner des objets [[yii\db\ActiveRecord|ActiveRecord]], vous pouvez utiliser la méthode
method when building a query to return a large number of records. This will cause the query result to be returned [[yii\db\ActiveQuery::asArray()|asArray()]] lors de la construction d'une requête pour renvoyer un grand nombre
as arrays, which can significantly reduce the needed CPU time and memory if large number of records . For example, d'enregistrements. Ainsi le résultat retourné sera sous forme de tableaux, ce qui peut réduire considérablement le temps de calcul nécessaire et la mémoire dans le cas d'un grand nombre d'enregistrements. Par exemple:
```php ```php
$customers = Customer::find()->asArray()->all(); $customers = Customer::find()->asArray()->all();
``` ```
Another change is that you can't define attribute default values through public properties anymore. Un autre changement est que vous ne pouvez plus définir les valeurs par défaut des attributs en utilisant des propriétés
If you need those, you should set them in the init method of your record class. publiques. Si vous avez besoin, vous devez utiliser la méthode `init` de la classe de votre modèle.
```php ```php
public function init() public function init()
...@@ -456,30 +458,32 @@ public function init() ...@@ -456,30 +458,32 @@ public function init()
} }
``` ```
There where some problems with overriding the constructor of an ActiveRecord class in 1.1. These are not present in Il y avait des problèmes de surcharge du constructeur de la classe ActiveRecord 1.1. Ces problèmes n'existent plus dans
version 2.0 anymore. Note that when adding parameters to the constructor you might have to override [[yii\db\ActiveRecord::instantiate()]]. la version 2.0. Notez que lorsque vous ajoutez des paramètres au constructeur, vous avez éventuellement à surcharger
la méthode [[yii\db\ActiveRecord::instantiate()]].
There are many other changes and enhancements to Active Record. Please refer to Il y a beaucoup d'autres modifications et améliorations à Active Record.
the [Active Record](db-active-record.md) section for more details. Merci de lire la partie [Active Record](db-active-record.md) pour en savoir plus.
User and IdentityInterface User et IdentityInterface
-------------------------- -------------------------
The `CWebUser` class in 1.1 is now replaced by [[yii\web\User]], and there is no more La classe `CWebUser` 1.1 est maintenant remplacé par [[yii\web\User]], et il n'y a plus de classe `CUserIdentity`.
`CUserIdentity` class. Instead, you should implement the [[yii\web\IdentityInterface]] which Au lieu de cela, vous devez implémenter [[yii\web\IdentityInterface]] qui est beaucoup plus simple à utiliser.
is much more straightforward to use. The advanced application template provides such an example. Le modèle d'application avancé fournit un exemple.
Please refer to the [Authentication](security-authentication.md), [Authorization](security-authorization.md), and [Advanced Application Technique](tutorial-advanced-app.md) sections for more details. Merci de lire les parties [Authentification](security-authentication.md), [Authorisation](security-authorization.md), et
[Modèle application avancée](tutorial-advanced-app.md) pour en savoir plus.
URL Management Gestion des URL
-------------- ---------------
URL management in Yii 2 is similar to that in 1.1. A major enhancement is that URL management now supports optional La gestion des URL dans Yii 2 est similaire à celle disponible dans la version 1.1. Une amélioration majeure est que la
parameters. For example, if you have a rule declared as follows, then it will match gestion des URL supporte désormais les paramètres optionnels. Par exemple, si vous avez une règle déclarée comme suit,
both `post/popular` and `post/1/popular`. In 1.1, you would have had to use two rules to achieve cela fera correspondre `post/popular` et `post/1/popular`. Dans la version 1.1, il fallait utiliser deux règles pour
the same goal. atteindre le même objectif.
```php ```php
[ [
...@@ -489,11 +493,11 @@ the same goal. ...@@ -489,11 +493,11 @@ the same goal.
] ]
``` ```
Please refer to the [Url manager docs](url.md) section for more details. Merci de lire la partie [Gestion des URL](url.md) pour en savoir plus.
Using Yii 1.1 and 2.x together Utiliser Yii 1.1 et 2.x ensemble
------------------------------ --------------------------------
If you have legacy Yii 1.1 code that you want to use together with Yii 2.0, please refer to Si vous avez du code Yii 1.1 que vous souhaitez réutiliser avec Yii 2, merci de lire la partie [Utiliser Yii 1.1 et 2.0 ensemble](extend-using-v1-v2.md).
the [Using Yii 1.1 and 2.0 Together](extend-using-v1-v2.md) section.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment