Suivez-nous sur :

Dossier [Dossier] CodeIgniter, quand un framework PHP change littéralement votre façon de travailler

Dans Dossiers par noxo., le 24 Juil. 2015 à 21:57

On se retrouve cette fois-ci dans un dossier plutôt orienté développement Web où je vais vous parler de mon expérience suite à l'utilisation d'un framework.

Tout d'abord, avant de vous parler du framework en question, il serait plus judicieux de vous parler de moi, que vous sachiez ce dont je suis capable. Cette petite présentation ne sera là que pour que vous vous fassiez une petite idée de mes compétences et que vous vous reconnaissiez dans certains cas.

Tout d'abord, à l'heure où j'écris ces lignes j'ai 24 ans. Je me suis mis à l'apprentissage d'un framework PHP il y a quelques mois seulement à une allure très très calme. L'objectif était de passer un cap supérieur car je commençais à perdre goût au développement Web.

Pour faire simple, je suis développeur Web/Web Designer polyvalent et autodidacte. Je connais très bien les langages de base à savoir HTML, CSS, PHP (PDO) ainsi que MySQL, du Javascript et quelques librairies intéressantes suite à de la veille. J'ai une logique plutôt correcte et arrive assez rapidement à debuguer du code. J'étais capable (et c'est toujours le cas) de concevoir un petit CMS fait main pour la gestion complète d'un site sans problème. L'exemple parfait est celui sur lequel vous lisez cet article : Revue Multimédia.

Aujourd'hui avec CodeIgniter, je peux vous dire que j'ai ajouté plusieurs critères à ma liste de compétences et pas n'importe lesquels puisqu'il m'est arrivé par le passé d'être recalé de certains entretiens à cause de l'absence de ces points. J’aurai pu choisir d’autres frameworks tels que Symfony, Laravel ou encore Phalcon mais un ami m’a vivement conseillé CodeIgniter alors en me penchant sur le sujet, mon choix était fait.

Commençons par la POO (Programmation Orientée Objet). Celle-ci devient indispensable lors de la conception de n'importe quel projet ayant une envergure importante. Bien sûr pour un site vitrine pour le boucher du coin l'objet n'est pas nécessaire mais dès qu'on commence à compliquer les choses et à permettre à un utilisateur d'intéragir sur le site, l'objet devient indispensable.

Ensuite, l'architecture MVC (Model-View-Controller). C'est un point indispensable bien trop souvent mis de côté quand on ose pas vraiment se pencher sur le sujet car ça paraît plutôt barbare mais il n'en est rien. Pour ceux qui ne savent pas ce qu'est l'architecture MVC, c'est tout simplement une façon de hiérarchiser ses fichiers et son contenu afin d'être à la fois plus professionnel, plus productif et mieux organisé. Pour faire simple, on sépare l'affichage, les conditions et traitements de données, et les requêtes en base de données. Autrement dit chaque chose se trouve à sa place et c'est beaucoup plus facilement réutilisable.

Autre point où j'ai gagné mon étoile, c'est la vitesse à laquelle je développe désormais. Pour un module sur lequel il faudrait compter deux journées de travail, le temps passé dessus change complètement et ça ne se compte plus en journées mais en heures. Oui oui ! Deux heures de boulot pour une tâche qui aurait pris bien plus de temps. Pourquoi ? Simplement car un framework a des fonctions déjà conçues parfaitement et prêtes à l'emploi. Il suffit juste de charger les bonnes librairies au début du projet ou au début d'une partie d'un script pour appeler les fonctions qui y sont liées de façon à obtenir le résultat souhaité.

L'exemple le plus flagrant est une validation de formulaire. Je vous invite à lire le code ci-dessous afin que vous voyez la différence qu'il y a entre du code procédural (que vous êtes censés connaître) et du code sous CodeIgniter.

Comme vous pouvez le voir c'est plutôt explicite. Chaque champ est traité à sa manière en y ajoutant simplement un mot-clé qui fait appel à une fonction. Le moteur de CodeIgniter se chargera d'utiliser les librairies pour faire les vérifications automatiquement et retourner true ou false ainsi que l’erreur correspondante s’elle existe.

Ça peut vous paraître assez difficile au premier coup d'oeil mais quand on prend le temps de lire la documentation, et il n'y a rien de mieux pour apprendre un langage, on assimile très vite la façon dont on peut se servir de chaque fonction du framework.

Vidéo de présentation

Voici une vidéo de présentation lors du Humantalks de février 2015 par Arnaut Delannoy où celui-ci nous parle de CodeIgniter.

Parlons à présent des points positifs et négatifs de CodeIgniter.

Poings négatifs

Si vous n’êtes pas très copain-copain avec l’anglais (ça arrive chez certains développeurs), vous serez déçus d’apprendre que la documentation en français n'existe plus. Le lien n’est plus disponible depuis quelques mois. Celle en anglais est très bien conçue donc croyez moi que ça vaut tout de même le coup d'y jeter un oeil.

Il a souvent été rapporté sur la toile que migrer de CodeIgniter vers un autre framework était une tâche plutôt laborieuse. À priori, c’est toujours le cas donc si vous souhaitez utiliser CI, réfléchissez-bien à l’objectif final. Est-ce pour apprendre ou vraiment pour développer sur CI ? Notons également que jusqu’à la version 3.0 du framework (la plus répandue est la 2.2), il n’y avait pas de tests unitaires possibles ce qui en freinait plus d’un. Les Namespaces sont également absents du framework, ce qui pourrait gêner ceux qui aiment les utiliser en programmation orientée objet.

Points positifs

Du côté des points mettant en avant le framework, il y a tout d’abord sa documentation qui est simple, complète et explicite. On ne peut clairement pas rêver mieux. Du côté du temps d’apprentissage, il ne faudra pas beaucoup de temps pour comprendre le principe de fonctionnement et nous donner envie d’en apprendre encore plus sur CI. Il n’y a pas besoin d’installation. Renseigner quelques informations dans les fichiers situés dans le /config suffiront à mettre en place CodeIgniter sur un serveur. C’est léger et rapide en temps d’exécution. Je dirais également qu’étant donné qu’il y a une très large et très active communauté sur les forums, ce point est un des plus importants car l’entraide fait partie de l’apprentissage. Et pour finir, j’ajouterais que CodeIgniter n’est pas une usine à gaz contrairement à ses concurrents qui proposent beaucoup trop de choses et qui peuvent rapidement faire baisser les bras à un novice.

Bien sûr, ce n’est pas le meilleur, il est simplement parfait selon moi pour se lancer dans l’apprentissage d’un framework sans faire peur à quelqu’un qui n’a jamais mis les pieds dans ce monde.

D'après ma propre expérience, je peux vous certifier que CodeIgniter est le framework ultime si vous souhaitez à la fois progresser en MVC, Objet et assimiler l'utilisation d'un framework. Il est léger mais complet. C'est exactement ce qu'il faut quand on aime rester maître de son code source.

Sujets : Framework PHP CodeIgniter Laravel Symfony Phalcon MVC POO HTML CSS SQL PHP PDO Tests Unitaires Namespaces

D'autres Dossiers

Commentaires