Ces temps-ci je suis un peu comme les gens de EllisLab, je prends mon temps entre les billets sur ce blog comme vous avez pu le remarquer. Mais bon, tout arrive, la preuve...

Et donc la fameuse nouvelle mouture de CodeIgniter est sortie en version finale 2.0 ce janvier dernier. je ne vais pas revenir sur les nouveautés ou bien encore la fin du support de PHP 4, mais plutôt vous proposer ma méthode pour passer un projet CodeIgniter 1.x vers la version 2.0 car certaines choses ont changé et si il n'y a rien d'insurmontable vos anciens projets ne marchent plus avec cette nouvelle version.

Alors, commencez donc par récupérer CodeIgniter et dé-zippez l'archive.

Contrairement à l'excellent post de Phil Sturgeon "Upgrading to CodeIgniter 2.0" dont ce billet est inspiré, je vais plutôt partir sur une installation vierge et propre dans laquelle vous déplacerez vos fichiers plutôt que la méthode de Phil qui consiste a faire l'inverse et mettre un CodeIgniter par dessus votre projet.

Vous devez aussi lire les notes concernant l'ugrade dans la documentation officielle, même si c'est abordé ici ça ne fait pas de mal !

Donc, dans l'ordre :

1 - Vous copiez le dossier dé-zippé de CodeIgniter 2.0 sur votre serveur, la ou vous mettez vos applications, a coté de votre application qui est en CodeIgniter 1.x. La grosse nouveauté que vous allez voir immédiatement 'est que le dossier "Application" n'est plus à l'intérieur du dossier "System", il en a été sorti pour se retrouver à coté, et ça c'est bien.

2 - Ouvrez votre nouveau dossier "Application", puis allez dans "Config" et éditez le fichier "config.php" pour remettre les réglages de votre ancienne application, souvent les deux variables de base :

$config['base_url']='http://localhost/mondossier/';
$config['index_page']='';

Je met volontairement la variable "index_page" vide pour avoir de jolies URLs, sans le "index.php" dedans.

3 - Copiez et éditez (si vous n'en aviez pas créez le) votre ".htaccess" qui se trouve à la racine de votre dossier, au niveau des dossiers "system" et "application". Cela sert pour les jolies URLs, surtout si vous avez viré le "index_page" ci dessus. Chez moi j'ai eu un problème avec mon ancien ".htaccess" qui ne marchait plus avec la nouvelle version, je n'ai pas cherché pourquoi, en voilà un qui marche :

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [L]

4 - Depuis votre ancien dossier, copiez maintenant vos Controllers dans "Application/Controllers", vos vues dans "Application/Views" et, vous l'aurez deviné, vos Models dans "Apllication/Models". Si vous aviez des librairies faites de même, si vous aviez des Plugins et bien c'est mort, les Plugins ont disparus de CodeIgniter 2.0 et vous devez donc les convertir en "Helpers" ou en "Libraries". Le plus simple reste de les transformer en "Helpers", en effet il suffit de les mettre dans le dossier et de changer le nom depuis "monNom_pi.php" vers "monNom_helper.php". Évidement vous devrez changer vos appels dans vos fichiers et les chargement ou l'"autoload".

5 - Maintenant il faut modifier un peu le code de vos "Models" et vos "Controllers" car des choses ont changé : Maintenant il faut étendre CI_model et CI_Controller, il faut donc changer ça :

class MonModel_model extends Model
class MonController extends Controller

en ça :

class MonModel_model extends CI_Model
class MonController extends CI_Controller

Et il faut également modifier le constructeur, pour remplacer ça :

parent::Controller();

En ça :

parent::__construct();

Râlez pas, demandez pas pourquoi, il faut le faire, c'est tout ! :-)

6 - Enfin, si jamais vous utilisiez encore la vieille classe de validation, ce qui est mal, elle n'existe plus dans cette version 2.0, et comme c'est pas faute d'avoir été prévenu et bien maintenant il faut la changer pour de bon.

Voilà, c'est fini, normalement c'est tout, c'est assez simple finalement, et vous allez pouvoir bénéficier des nouveautés de CodeIgniter 2.0 pour votre application en plus des performances améliorées.