CodeIgniter, le framework au service des Zéros

CodeIgniter, le framework au service des Zéros

Mis à jour le lundi 7 janvier 2013
  • 2 semaines
  • Difficile

Voici enfin venu le moment où vous allez pouvoir télécharger CodeIgniter et ouvrir votre éditeur de texte.

Au menu : téléchargement, installation, découverte de l'arborescence et configuration. À table !

Téléchargement et installation

Téléchargement

Rendez-vous sur le site officiel de CodeIgniter pour pouvoir télécharger le framework, et plus exactement dans la rubrique downloads. Vous devriez normalement voir un gros bouton Download CodeIgniter. À l'heure où j'écris ces lignes, la version actuelle est la 2.0.2. Bien entendu, prenez la dernière version.

Pendant que j'y suis, j'en profite aussi pour vous donner le lien de la documentation. S'il y a bien un lien qu'il faut mettre dans vos favoris, c'est celui-ci.

Une fois qu'elle sera téléchargée, il faudra décompresser l'archive et placer le dossier portant le même nom que la version dans votre répertoire web. Vous pouvez le placer où vous voulez. Pour les besoins du tutoriel, j'ai renommé le dossier en codeIgniter et je l'ai placé dans mon répertoire www.

Installation

Vous allez voir, l'installation va être très rapide.

Quelques modifications

Dans votre dossier (que j'ai appelé codeIgniter), vous avez normalement deux fichiers : index.php et licence.txt. Vous pouvez faire ce que bon vous semble de la licence.
Ensuite, vous avez la documentation dans le dossier user_guid. Vous pouvez aussi en faire ce que bon vous semble.

Image utilisateur
index.php

Maintenant, vous allez ouvrir le fichier index.php. La première chose à configurer est de définir si le framework est actuellement en période de développement, de test ou de production. La conséquence immédiate est l'affichage ou non des erreurs. Normalement, la constante est déjà sur development.

<?php

define('ENVIRONMENT', 'development');			//  (development | testing | production)

Une fois cela fait, vous pouvez modifier les deux variables suivantes : system_path et application_folder. Le premier est le chemin vers le dossier system et le second est celui vers le dossier application.
La configuration par défaut est fonctionnelle. On pourra par la suite les changer sans problème.

<?php

/*
|---------------------------------------------------------------
| SYSTEM FOLDER NAME
|---------------------------------------------------------------
*/
	$system_path = "system";

/*
|---------------------------------------------------------------
| APPLICATION FOLDER NAME
|---------------------------------------------------------------
*/
	$application_folder = "application";

Vous avez fini d'installer CodeIgniter. Vous avez normalement accès à la page d'accueil du framework (chez moi, c'est http://localhost/codeIgniter/) et celui-ci vous souhaite la bienvenue.

Image utilisateur

Si vous ne voyez pas ce message, reprenez bien les étapes dans l'ordre et assurez-vous de bien avoir les prérequis de votre version téléchargée (version minimale de PHP, droits de lecture...).

Mise en place de l'arborescence

Maintenant que le framework est installé, attardons-nous sur l'arborescence de CodeIgniter.

Les dossiers application et system

À côté de votre index.php, vous avez deux dossiers : application et system. Le dossier system contient tous les codes natifs de CodeIgniter alors que le dossier application va contenir tous vos codes. Vous ne devrez donc jamais modifier les fichiers présents dans le dossier system, et je vais vous en expliquer la raison tout de suite.

Imaginons que vous n'aimez pas le nom d'une méthode. Vous allez donc lancer une petite recherche et modifier le nom de cette méthode. Sauf que vous allez avoir de gros problèmes maintenant. En voici trois qui méritent d'être cités.

  • Si une nouvelle version de CodeIgniter sort, vous allez devoir refaire vos manipulations. Et ne dites pas que vous ne ferez pas la mise à jour, car vous risquez des problèmes de sécurité.

  • En modifiant les sources, vous êtes susceptibles de laisser passer des failles, car il y a de fortes chances que vous ne connaissiez que l'aspect « utilisateur » du framework.

  • Un des avantages de l'utilisation d'un framework est la facilité de travailler à plusieurs, car chacun sait comment le système fonctionne. Mais si vous modifiez les sources de CodeIgniter, son comportement ne sera plus le même.

Nous verrons par la suite comment effectuer ces changements sans toucher à ce dossier.

Le dossier assets

Avant de décrire précisément le contenu du dossier application, vous allez créer un dossier assets, toujours dans le même dossier que le fichier index.php. Et à l'intérieur de celui-ci, créez aussi les dossiers css, javascript et images.

Vous disposez maintenant d'une arborescence très claire.

  • assets contiendra toutes les ressources qui vont être téléchargées par les visiteurs. Par exemple, les feuilles de style externes (CSS), les fichiers JavaScript et les images. Cependant, vous pouvez aussi ajouter des dossiers tels que musiques, videos, xml (pour les flux RSS, les animations flash). C'est comme si vous alliez faire un copier-coller de ce dossier dans l'ordinateur de vos visiteurs. Rien ne doit être confidentiel.

  • system contient les sources de CodeIgniter, vous ne devez pas y toucher.

  • application contiendra tous vos scripts, qu'il faudra placer dans les bons dossiers. C'est ce que nous allons voir tout de suite.

Le dossier application

Voici l'arborescence du dossier application avec les explications des dossiers dont nous nous servirons dans la prochaine partie.

Image utilisateur
  • config : ce sont des fichiers permettant de configurer CodeIgniter ou une bibliothèque. Certains sont inclus automatiquement, d'autres seulement lorsque vous les demandez.

  • controllers : ce dossier contiendra tous nos contrôleurs.

  • errors : ce sont les pages d'erreurs. Libre à vous de les personnaliser selon votre design.

  • helpers : c'est le répertoire pour vos helpers. Les helpers fournis avec CodeIgniter sont situés dans le dossier system.

  • hooks : c'est un dossier qui contient des fichiers assez complexes. Ils permettent d'exécuter des scripts à différents moments du processus d'exécution de CodeIgniter.

  • language : ce répertoire contiendra tous vos fichiers de langue dans le cas où vous souhaitez un site internationalisé.

  • libraries : nous placerons nos bibliothèques dans ce dossier. Comme les helpers, les bibliothèques fournies par CodeIgniter sont situées dans un autre dossier.

  • models : le répertoire des modèles.

  • views : le répertoire des vues.

En respectant les emplacements des différents fichiers, vous gagnerez en clarté.

Configurons CodeIgniter

Certes, l'installation est terminée, mais il reste encore certains points à définir.

Le fichier config.php

Ce fichier de configuration est le cœur de la configuration du framework. Il se trouve dans le dossier ./application/config/. Je ne vais pas décrire tous les points mais sachez que nous allons aborder les plus importants.

base_url

C'est l'URL que vous devez taper pour accéder au fichier index.php. Dans mon cas, ce sera :

<?php

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
*/
$config['base_url'] = "http://localhost/codeIgniter/";
index_page

Par défaut, la valeur est index.php. Nous allons voir que CodeIgniter génère par défaut des URL de cette forme-là :
http://localhost/codeIgniter/index.php/classe_controleur/methode_controleur/.

Problème, ce « index.php » n'est pas des plus jolis. Pour le masquer, il y a une solution : l'URL rewriting. Si vous avez activé ce module, alors vous pouvez créer un fichier .htaccess à côté du index.php contenant ce code :

#   Empêche la visualisation de l'arborescence, n'a rien à voir avec le masquage du « index.php ».
Options -Indexes

#   Active le module de réécriture d'URL.
RewriteEngine on

#
#   Fixe les règles de réécriture d'URL. Ici, nous utilisons une liste blanche.
#

#   Toutes les URL qui ne correspondent pas à ces masques sont réécrites.
RewriteCond $1 !^(index\.php|assets/|robots\.txt)

#   Toutes les autres URL vont être redirigées vers le fichier index.php.
RewriteRule ^(.*)$ index.php/$1 [L]

Une fois cela fait, vous pouvez vider la variable index_page puisque les URL seront redirigées vers ce fameux fichier index.php.

<?php

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
*/
//    Dans le cas où mod_rewrite est activé
$config['index_page'] = "";

//    Dans le cas contraire
$config['index_page'] = "index.php";

Maintenant, vos URL ne contiendront plus le « index.php ».

url_suffix

C'est le suffixe que vous voulez donner à vos URL. Vous pouvez donner n'importe quoi. CodeIgniter l'ignorera...
Dans mon cas, je vais choisir l'extension html. Vous pourrez tout aussi bien ne rien mettre. C'est facultatif.

<?php

/*
|--------------------------------------------------------------------------
| URL suffix
|--------------------------------------------------------------------------
*/

$config['url_suffix'] = ".html";
language

Cette option permet de configurer la langue par défaut. C'est très utile si vous voulez afficher les erreurs en français et non en anglais.

Si c'est le cas, alors il va falloir modifier certaines choses. Dans un premier temps, passez cette variable à « french ».

<?php

/*
|--------------------------------------------------------------------------
| Default Language
|--------------------------------------------------------------------------
*/
$config['language'] = "french";

Désormais, lorsqu'il y aura une erreur, CodeIgniter voudra l'afficher en français. Sauf que CodeIgniter ne propose qu'un jeu de langue anglais... Jetez un petit coup d'œil aux fichiers situés dans le répertoire ./system/language/. Il n'y a que le dossier english.

Vous avez donc deux solutions : traduire l'ensemble des fichiers de langue ou récupérer un fichier de langue sur le web.

Si vous voulez récupérer un fichier de langue, vous pourrez en trouver sur le wiki officiel ou bien dans les sources de PyroCMS. C'est un CMS qui a été développé avec CodeIgniter. Il vous suffit de télécharger ce CMS, de le décompresser et d'aller dans le répertoire ./codeigniter/language/. Dans ce dossier, vous avez accès à une panoplie de langages, dont le français (french). Il vous suffit donc de déplacer le dossier french de PyroCMS jusque dans votre répertoire ./system/language/.

Maintenant, CodeIgniter est en mesure d'afficher les erreurs en français.

session

Vous pouvez aussi configurer l'utilisation des sessions.

Voici ce que vous pouvez paramétrer :

<?php

//    Le nom du cookie...
$config['sess_cookie_name'] = 'ci_session';

//    La date de péremption du cookie, en secondes...
$config['sess_expiration'] = 7200;

En plus de cela, CodeIgniter propose de stocker les sessions dans votre base de données au lieu de les stocker dans les cookies.

Si vous êtes intéressés par cette fonctionnalité, alors vous devez dans un premier temps créer une table ci_sessions dans votre base de données.
Ce code vous permettra de générer la table. Il s'agit d'un simple code SQL.

CREATE TABLE IF NOT EXISTS `ci_sessions` (
	session_id      varchar(40)    DEFAULT '0' NOT NULL,
	ip_address      varchar(16)    DEFAULT '0' NOT NULL,
	user_agent      varchar(120)   NOT NULL,
	last_activity   int(10)        unsigned DEFAULT 0 NOT NULL,
	user_data       text           NOT NULL,

	PRIMARY KEY (session_id),

	KEY `last_activity_idx` (`last_activity`)
);

Une fois ceci fait, vous devez lui dire d'utiliser la base de données.

<?php

//    La valeur TRUE permet d'utiliser la base de données
$config['sess_use_database'] = TRUE;

//    Le nom de la table
$config['sess_table_name'] = 'ci_sessions';
compress_output

Cette clé permet d'activer la compression Gzip. Elle est désactivée par défaut car tous les hébergeurs ne supportent pas cette fonctionnalité. Pour rappel, cette compression permet de réduire la taille du contenu envoyé au navigateur. En théorie, les pages devraient se charger plus rapidement.

Maintenant que cela est fait, nous allons configurer notre base de données.

Le fichier database.php

Dans ce fichier, vous noterez vos identifiants et le mot de passe de connexion à votre base de données.

<?php

/*
| -------------------------------------------------------------------
| DATABASE CONNECTIVITY SETTINGS
| -------------------------------------------------------------------
*/

$db['default']['hostname'] = "nom_d_hote";
$db['default']['username'] = "nom_d_utilisateur";
$db['default']['password'] = "mot_de_passe";
$db['default']['database'] = "base_de_donnees";

Maintenant, votre base de données est opérationnelle.

Le fichier autoload.php

Ce fichier vous permet d'inclure dès le lancement de CodeIgniter des bibliothèques, des helpers, ainsi que des modèles et fichiers de langue.

Bibliothèque

Je vous propose de charger au démarrage du framework deux bibliothèques : les sessions et les bases de données. Je trouve que ce sont des fonctionnalités « élémentaires » qui nécessitent d'être constamment utilisées ou presque.

Pour faire cela, vous devez ajouter dans le tableau les bibliothèques que vous voulez charger.

<?php

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
*/
$autoload['libraries'] = array('database', 'session');

Lorsque vous connaîtrez plus de bibliothèques, ou que vous aurez besoin d'inclure les vôtres, vous pourrez les ajouter à la suite.

Helpers

Nous allons aussi charger un helper : url. Il nous permettra d'écrire des URL en fonction des paramètres que vous aurez définis dans le fichier ./application/config/config.php. En utilisant ces fonctions, toutes vos URL seront instantanément modifiées si la valeur de $config['base_url'] est modifiée.

<?php

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
*/

$autoload['helper'] = array('url');

Nous en avons fini avec la configuration de CodeIgniter.

Cette partie est terminée. Nous allons maintenant attaquer la deuxième partie.

Comme je vous l'ai dit dans la partie précédente, c'est le contrôleur qui est appelé en premier. Nous allons donc aborder celui-ci dès maintenant.

Découvrez aussi ce cours en...

Exemple de certificat de réussite
Exemple de certificat de réussite