Menu
Menu

Nous contacter

01 82 83 51 70 infos@globalis-ms.com

6B rue Auguste Vitu

75015 Paris


« Retour

CodeIgniter

Un framework PHP léger et rapide.

Utilisé par près de 80 % des sites web comme langage de programmation côté serveur, PHP est depuis plusieurs années le langage le plus utilisé du web. On le retrouve via des CMS/Framework comme WordPress, Drupal ou Joomla! mais aussi à travers des Framework web plus orientés développeur, comme Laravel, Symfony ou CodeIgniter.

C’est à ce dernier que nous allons nous intéresser dans cet article.


Qu’est-ce que CodeIgniter ?

Ses auteurs définissent CodeIgniter comme : « un puissant Framework PHP nécessitant peu de ressources, conçu pour les développeurs qui ont besoin d’une boîte à outils simple et élégante pour créer des applications web complètes ».

Cette définition est confirmée par les choix architecturaux fait par le projet lui-même : CodeIgniter est un Framework PHP simple, léger et performant, sur le modèle de développement MVC.

Architecture du Framework CodeIgniter

CodeIgniter reprend un le design pattern de composition qui a fait ses preuves dans le développement web : HMVC pour Hierarchical Model Vue Controller.

Ce modèle dérive du MVC (Model View Controller) qui prône la séparation des préoccupations (separation of concerns).

Et si modèle MVC permet une programmation élégante et plus maintenable/évolutive de part la séparation claire entre l’acquisition de données (le M de Model), la présentation de ces données (le V de Vue) et la gestion des demandes des utilisateurs (le C de Controller), le modèle HMVC y ajoute une composante hiérarchique pour encore plus de modularité.

Il convient toutefois de préciser que l’approche MVC de CodeIgniter est assez souple : il est par exemple possible de faire l’impasse sur les modèles de données si on le souhaite.

CodeIgniter fournit en outre, la possibilité d’enrichir ce modèle via des libraries/helpers utiles au développement.


Les modèles (Model)

Les modèles de données définissent la structure et la manière d’accéder aux données. C’est là que l’on code l’enregistrement, la lecture, la mise à jour, et la suppression des données dans une base de données, un fichier ou en mémoire.

Cette abstraction permet de clairement séparer les opérations de manipulations de données pures de ce qui relève de la logique métier ou de l’affichage.

Les vues (Vue)

Les vues sont responsables de la présentation des données. Dans le cadre d’une application web les vues servent souvent à générer des pages web (HTML), mais aussi à présenter de manières différentes les mêmes données :

Une liste de liens en est un bon exemple : selon le client vous pouvez avoir différentes vues qui retournent pour les mêmes données, une page HTML avec une liste de liens (pour un navigateur graphique), une liste de lien au format texte (navigateur mode texte), la liste au format JSON (application mobile), ou un flux RSS (agrégateur)

Les contrôleurs (Controller)

Les contrôleurs font le lien entre les modèles, les vues et les requêtes de l’utilisateur.

C’est le routeur du Framework qui va, dans un premier temps, faire le lien entre l’URL et la classe/méthode de contrôleur à utiliser. C’est ensuite dans ce contrôleur que les données nécessaires vont être manipulées via le modèle adapté, puis présentées en utilisant une vue.

Sachez toutefois que deux écoles s’opposent sur les contrôleurs :

  • vous pouvez utiliser des contrôleurs minimalistes (thin controller) qui font appels à des modèles plus étoffés (fat model) qui contiennent beaucoup de logique métier en plus des méthodes d’accès aux données.
  • vous pouvez choisir des contrôleurs qui contiennent la logique métier et qui font appel à des modèles minimalistes qui ne font qu’accéder aux données.

Et même si l’approche « thin controller » a la préférence de beaucoup, CodeIgniter vous laisse la liberté de choisir votre camp.


Pourquoi choisir codeigniter ?

C’est bien joli me direz-vous, mais pourquoi choisir CodeIgniter parmi la myriade de Framework PHP permettant de faire du MVC ?

Pour répondre à cette question il faut revenir aux objectifs définis par le projet et les promesses du Framework.

Rappelons le CodeIgniter se fixe comme objectif d’être :

  • Puissant
  • Simple
  • Elégant
  • Économe en ressource

Il promet en outre plusieurs avantages tels que :

  • Une performance exceptionnelle
  • Une configuration requise quasi nulle
  • Une documentation de qualité
  • De ne pas imposer de norme/méthode/style de programmation

La liste du site est plus longue et je vous invite à vous y référer pour plus de détail.


Les caractéristiques de CodeIgniter


Puissance

En complément de l’architecture MVC, CodeIgniter fournit en standard tout ce qu’il faut pour produire rapidement un site web riche en fonctionnalités : validation des formulaires et des données, sessions, sécurité (XSS, CSRF…), gestion multi-langues, XML-RPC, accès base de données, caching, pagination, chiffrement, compression, envoi d’email, manipulation d’image…

Simplicité

La simplicité est omniprésente dans CodeIgniter : Que ce soit dans son architecture avec par exemple le principe de singularité des composants (réduction du périmètre fonctionnel d’un composant), dans le code qui est d’une lisibilité exemplaire ou même dans l’affichage des vues qui ne vous impose pas un moteur de template et s’appuie sur la capacité de PHP d’étendre l’affichage HTML.

Élégance

Si donner une définition subjective de l’élégance du code n’est pas simple. On peut rapprocher la notion d’élégance d’une combinaison de simplicité, modularité et de performance.

Et dans ce cadre, CodeIgniter, par sa simplicité, la modularité de son architecture et par les performances qu’il offre peut sans trop de mal être considéré comme un Framework élégant.

Économie en ressouces

Si l’on considère la taille sur disque du Framework, l’occupation mémoire, ou le temps de chargement CodeIgniter apparaît comme un Framework frugal en comparaison de ses principaux concurrents.

(CodeIgniter une fois téléchargé n’occupe que 11,4 Mo sur le disque, à titre d’exemple Symfony occupe lui 23,9 Mo.) 

Ce n’est pas une surprise si l’on considère que c’est un des objectifs du projet qui a fait plusieurs choix architecturaux en ce sens (Singularité des composants, instanciation dynamique…)

Excellente documentation

Souvent ignorée, la qualité de la documentation revêt une importance toute particulière dans le cas d’un Framework web. L’architecture y est-elle clairement décrite ? Des tutoriaux permettant de prendre en main rapidement le Framework sont-ils disponibles ? Les API sont-elles précisément décrites avec des exemples permettant de les mettre en œuvre efficacement ?

La documentation de CodeIgniter est de l’avis unanime, un exemple en la matière.

Performances exceptionnelles

Même si les benchmarks sont toujours à prendre avec du recul, CodeIgniter est régulièrement bien placé en matière de performances. Et si quelques Frameworks peu connus comme Siler, Tipsy (qui n’est plus maintenu) semblent offrir de meilleures performances, ils sont loin d’avoir la maturité, les fonctionnalités et la base utilisateurs de CodeIgniter. Si l’on compare CodeIgniter avec ses principaux concurrents, à savoir Laravel et Symfony (voire Zend Framework), le résultat est sans appel en faveur de codeIgniter.

Configuration réduite au minimum

La promesse d’une configuration requise quasi-nulle est tenue en favorisant les conventions plutôt que la configuration, concept qui avait déjà été popularisé en son temps par Ruby On Rails dont CodeIgniter s’inspire ouvertement. Concrètement si la table dans votre base de données correspond au nom de la classe du modèle en minuscule sous sa forme plurielle vous n’avez plus rien à faire pour que ça marche. Si vous voulez changer cette convention c’est bien sur possible mais vous devrez alors explicitement configurer le nom de table associé.

Liberté dans sa manière de coder

Bien que complet CodeIgniter ne vous enferme en rien dans un carcan.

Vous ne souhaitez pas utiliser de modèles, libre à vous.

Aucune règle/méthode de codage ne vous sera non plus imposée.

Vous pouvez charger uniquement ce dont vous avez besoin.

Pour reprendre le célèbre slogan : « tout est proposé, rien n’est imposé »

Les avantages à utiliser CodeIgniter


On l’a vu,  la courbe d’apprentissage de CodeIgniter est exceptionnelle de par la simplicité du Framework  et l’excellence de sa documentation.

Si l’on ajoute le fait que CodeIgniter ne vous enferme pas dans telle ou telle technologie (ORM, moteur de template) ou paradigme de programmation, on mesure tout l’intérêt d’utiliser ce framework simple, léger, souple et performant.

Pouvoir développer une application web de qualité rapidement et intégrer des nouveaux besoins dans délais courts est une force qui explique le succès de CodeIgniter dans  un monde où il faut savoir se montrer agile.


L’expertise Globalis


Chez Globalis, nous avons commencé à expérimenter CodeIgniter en 2010. Depuis, nous travaillons régulièrement avec ce framework pour notre pôle “réalisation et refonte » (développement d’un pool API pour applications mobiles par exemple) mais aussi dans le cadre de missions chez nos clients.

Nous avons d’ailleurs développé et publié sous licence MIT plusieurs composants que vous pourrez retrouvez sur notre compte GitHub.


Votre projet

Une application CodeIgniter à réaliser ou à maintenir ?

Des résultats certifiés par Scorefact, + de 20 ans d’expérience. Décrivez-nous votre besoin et échangeons ensemble.

Être contacté par un expert