CodeIgniter et son modèle MVC

CodeIgniter est un framework php open source basé sur une architecture MVC.

Rappel:

L’architecture MVC (Modèle – Vue – Controller) permet d’organiser plus simplement une application.

  • Modèle : type de données, objet
  • Vue: interface avec l’utilisateur
  • Contrôleur: traitement des données, gestion des évènements.

Un framework est un kit qui permet de créer la base d’une application plus rapidement et avec une structure plus solide.

Présentation:

CodeIgniter a pour avantage d’être libre mais surtout d’être plus léger comparé aux autres frameworks php connus. Il possède un “guide utilisateur” (en ligne sur le site officiel et localement dans le dossier téléchargé) plus que complet qui propose de nombreux exemples d’applications. La mise en place est intuitive et aucune configuration n’est nécessaire pour une utilisation simple.

Pré requis:

Il vous faudra un serveur web local pour faire vos tests. Suivants vos systèmes d’exploitation: Wamp, Mamp, Xamp suffisent largement.

Installation rapide:

Après avoir télécharger CodeIgniter, vous pouvez directement accéder à l’application dans votre navigateur. Vous allez tomber sur cette page:

welcome to codigniter

Premiers pas:

Pour votre premier message, nous allons créé un nouveau controleur. Pour cela, aller dans le dossier “application/controllers” et créer une nouvelle page php “monControleur.php”. Voici son contenu:

class monControleur extends CI_Controller {     
    public function index() {     }     
    public function maMethode() { echo 'Hello World'; }
}

On va maintenant accéder à notre page avec l’url suivante:

codigniter-path

CodeIgniter fonctionne avec la synthaxe de base : index.php/le-controleur-que-nous-voulons-appeler/la-methode

Par défaut, un controleur appelle sa méthode index().

On a bien pour résultat “Hello World” dans notre page.

Mon utilisation:

Je travaille avec une base de donnée MySQL, j’ai donc mis de côté le Modèle de l’architecture MVC pour ne garder que l’interaction Vue-Contrôleur. En effet, les requêtes sql permettent de récupérer directement le modèle de la table de la base de donnée. Il suffit alors de travailler seulement dans le dossier “controllers” et “views” de l’application.

Par défaut, CodeIgniter utilise le driver MySQL pour toutes les requêtes en base de données. Personnellement j’ai mes habitudes avec le driver PDO. Pour travailler avec PDO, il faut modifier le fichier “application/config/database.php”, et remplacer “mysql” par “pdo”:

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'pdo';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Il faut aussi modifier le fichier “system/database/drivers/pdo/pdo-driver.php”. Trouver le segment suivant (ligne 81)

$this->hostname .= ";dbname=".$this->database;

Il faudra le remplacer par:

$this->hostname = 'mysql:host='.$this->hostname;
$this->hostname .= ";dbname=".$this->database;
$this->hostname .= ";charset={$this->char_set}";

Après ces modifications on peut dès à présent faire nos requêtes sql avec les options de PDO, comme par exemple le “bindParam”:

// on prépare une connexion
$this->load->database();

// on fait notre requête sql
$sql = $this->db->prepare ( "SELECT username FROM users WHERE id = :ID_USER");
$sql->bindParam(':ID_USER', $id_user, PDO::PARAM_INT);
$sql->execute();

// on vide la variable pour fermer la connexion
$this->db = null ;

Pour en savoir plus sur CodeIgniter, je vous propose d’aller sur le site officiel : www.codeigniter.com

© 2023 Benoit Pasquier. All Rights Reserved
Author's picture

Benoit Pasquier

Software Engineer 🇫🇷, writing about career development, mobile engineering and self-improvement

ShopBack 💰

Singapore 🇸🇬