Laravel 13 est sorti aujourd'hui ! Alors pour ne pas changer mes (bonnes) habitudes je reprends mon cours en l'actualisant. Dans ce premier chapitre je vais évoquer PHP, son historique rapide et sa situation actuelle. Je vais aussi expliquer l'intérêt d'utiliser un framework pour ce langage et surtout pourquoi j'ai choisi Laravel. J'évoquerai enfin le patron MVC et la Programmation Orientée Objet.
Un framework ?
Approche personnelle
PHP est un langage de programmation réputé pour sa simplicité et son accessibilité. Facile à installer et largement pris en charge par les hébergeurs, il permet aux développeurs, même débutants, de créer rapidement des applications web fonctionnelles. Cependant, cette facilité d'utilisation a un revers : le code PHP peut rapidement devenir confus, complexe et incohérent. En effet, PHP n'impose pas de structure organisationnelle, laissant aux développeurs la responsabilité de structurer leur code.
Lors du développement d'applications PHP, il est courant de créer des routines personnalisées pour gérer des fonctionnalités récurrentes, telles que la génération de pages dynamiques. Une fois une fonction ou une classe créée, il est naturel de la réutiliser pour des besoins similaires. Cependant, maintenir et mettre à jour cette bibliothèque personnelle peut s'avérer fastidieux.
De plus, les développeurs ont souvent une hiérarchie de dossiers préférée qu'ils répliquent d'un projet à l'autre. Si cette habitude peut accélérer le démarrage d'un nouveau projet, elle peut aussi entraîner des inefficacités, car la structure adoptée n'est pas toujours la mieux adaptée aux besoins spécifiques de chaque application.
En résumé, cette approche peut être comparée au bricolage, dépendant des compétences et de la disponibilité de chacun. Pour garantir la lisibilité, la maintenabilité et la réutilisabilité du code sur le long terme, il est essentiel de mettre en place des méthodes d'organisation et de structuration rigoureuses.
Puisque les IA envahissent tout notre Univers j'ai généré cette petite illustration :

(Re)découvrir PHP
Lorsque je l'ai découvert à la fin des années 1990, il en était à sa version 3. À l'époque, PHP était principalement utilisé comme langage de script, souvent intégré au HTML, pour créer des modèles, accéder à des données et les traiter. La version 4, sortie en 2000, a apporté davantage de stabilité et introduit les premiers éléments de la programmation orientée objet. Cependant, c'est avec la version 5, sortie en 2004, que PHP a véritablement atteint un niveau de maturité comparable à celui des autres langages de programmation. Les versions 7 et 8 ont ensuite consolidé cette crédibilité.
Cette évolution constante invite à abandonner les mauvaises habitudes de codage. Des ressources comme PHP The Right Way proposent des recommandations précieuses pour adopter de bonnes pratiques. Si vous êtes un développeur PHP autodidacte, je vous encourage vivement à consulter ce site. Il vous offrira une nouvelle perspective sur le langage et vous préparera efficacement à aborder des frameworks modernes comme Laravel.
Un framework
Selon Wikipédia, un framework informatique est un « ensemble cohérent de composants logiciels structurels servant à créer les fondations et les grandes lignes d'un logiciel ou d'une partie de celui-ci ». En d'autres termes, il s'agit d'une base homogène composée de briques prêtes à l'emploi. Il en existe pour tous les langages de programmation, y compris PHP, et leur nombre est tel qu'il serait fastidieux de tous les énumérer.
L'utilité d'un framework réside dans le gain de temps qu'il procure en évitant de réinventer la roue, c'est-à-dire de développer à nouveau ce qui a déjà été développé par d'autres, souvent plus compétents, et validé par de nombreux utilisateurs. Imaginez un framework comme une boîte à outils : si vous devez mettre en place du routage pour votre site, vous pouvez utiliser un composant éprouvé, ce qui vous fait gagner du temps tout en garantissant la fiabilité de votre application. De plus, vous bénéficiez de mises à jour régulières.
Il serait dommage de ne pas tirer parti d'un framework, tant les avantages sont nombreux. Outre la réutilisation de composants testés et validés, un framework comme Laravel offre une structure claire et bien organisée pour votre code, ce qui facilite la maintenance et la collaboration au sein d'un projet. Il inclut également souvent des fonctionnalités avancées pour la sécurité, la gestion des bases de données, le routage, la validation des données, etc., ce qui permet de développer des applications plus rapidement et de manière plus sécurisée.
Pourquoi Laravel ?
Constitution de Laravel
Ce que Laravel fait pour vous (aperçu des fonctionnalités)
Plutôt que de vous laisser assembler des pièces détachées, Laravel vous offre une "armure complète" répartie en quatre grands piliers :
1. La gestion des données (Le Cœur)
-
Eloquent ORM : ne manipulez plus des lignes de tableaux, mais des objets PHP. C'est magique et ultra-lisible.
-
Migrations : considérez cela comme le "Git de votre base de données". Vous décrivez vos tables en PHP, Laravel s'occupe de les créer.
-
Pagination : une seule méthode
.paginate()et Laravel génère les liens de navigation pour vous.
2. La structure et le flux (Le Squelette)
-
Routage RESTful : définissez des URLs claires et logiques (ex:
/articles/1) en quelques lignes. -
Moteur de templates Blade : écrivez du HTML dynamique avec une syntaxe élégante, sans jamais sacrifier la sécurité.
-
Middleware : des "douaniers" qui filtrent les requêtes (vérification d'âge, de langue, etc.) avant qu'elles n'atteignent votre code.
3. La sécurité (Le Bouclier)
-
Authentification & Autorisation : gérez les inscriptions, connexions et permissions (qui a le droit de voir quoi) de manière native.
-
Validation des données : un système puissant pour vérifier que ce que l'utilisateur envoie (e-mail, mot de passe) est correct avant de l'enregistrer.
-
Protection CSRF & SQL Injection : Laravel bloque par défaut les attaques les plus courantes du web.
4. Les services avancés (Les Options)
-
Notifications & Emails : envoyez des alertes par mail, SMS ou Slack via une API unique.
-
Gestion du Cache : accélérez votre application en stockant temporairement les données lourdes.
-
Localisation : préparez votre site pour le monde entier en gérant facilement plusieurs langues.
Toutes ces fonctionnalités sont pilotables via Artisan, l'interface en ligne de commande de Laravel. C'est votre assistant personnel qui génère du code pour vous en une seconde.
Cette liste peut sembler impressionnante, mais chaque élément deviendra plus clair au fur et à mesure de notre progression dans les chapitres.
Objectif de Laravel
Laravel vise à offrir un environnement de développement agréable et efficace en combinant le meilleur des autres bibliothèques et frameworks PHP, tout en proposant des fonctionnalités uniques et des conventions de codage claires. Les développeurs peuvent ainsi se concentrer sur la création d'applications évolutives et fiables, sans se soucier des détails techniques tels que la gestion des bases de données, le routage ou l'authentification.Le meilleur de PHP
Se plonger dans le code de Laravel, c'est suivre un véritable cours de programmation tant le style est clair, élégant et bien organisé. Pour aborder efficacement ce framework, il est recommandé d'avoir des connaissances de base en programmation.
-
Espaces de noms : ils permettent d'organiser le code de manière structurée pour éviter les conflits de nommage. Laravel utilise intensivement cette fonctionnalité, en rangeant chaque composant dans des espaces de noms distincts, y compris pour l'application créée.
-
Fonctions anonymes : aussi appelées closures, ces fonctions sans nom améliorent la flexibilité du code. Bien que courantes en JavaScript, elles sont moins familières aux utilisateurs de PHP, où elles ont été introduites plus récemment. Laravel les utilise systématiquement.
-
Méthodes magiques : ce sont des méthodes non explicitement définies dans une classe, mais qui peuvent être appelées et résolues dynamiquement.
-
Interfaces : une interface définit un contrat pour la structure des classes. En programmation orientée objet, elle se situe au sommet de la hiérarchie. Tous les composants de Laravel reposent sur des interfaces.
-
Traits : ils permettent d'ajouter des propriétés et méthodes à une classe sans recourir à l'héritage, contournant ainsi certaines limitations de l'héritage simple proposé par PHP.
Un framework comme Laravel ne vise pas à remplacer la connaissance d'un langage, mais à assister les développeurs qui le maîtrisent déjà. Si vous avez des lacunes, il est préférable de les combler pour tirer pleinement parti de Laravel. Vous comprendrez ainsi mieux son fonctionnement et profiterez de toutes ses fonctionnalités et optimisations. En vous familiarisant avec ces concepts, vous apprécierez davantage la structure et l'élégance du code de Laravel et serez mieux armé pour créer des applications évolutives et fiables.
La documentation de Laravel
Lorsqu'on s'intéresse à un framework, il ne suffit pas qu'il soit riche et performant ; il est également crucial que la documentation soit de qualité. Laravel excelle dans ce domaine. Vous trouverez la documentation officielle sur le site dédié, mais de nombreuses autres ressources sont également disponibles. Voici les principales :
- Laravel.io : le forum officiel de la communauté Laravel.
- Laravel Tricks : un site regorgeant d'astuces et de conseils pratiques.
- Packalyst : une plateforme répertoriant tous les packages pour étendre les fonctionnalités de Laravel.
- Laracasts : propose de nombreux tutoriels vidéo en anglais, dont certains en accès gratuit, ainsi qu'un forum actif.
- Awesome Laravel : une page GitHub rassemblant une multitude de liens utiles pour les développeurs Laravel.
Il existe également de bons livres sur Laravel, même si la plupart sont en anglais.
MVC ? POO ?
Le patron Modèle-Vue-Contrôleur (MVC)
Il est difficile de parler d'un framework sans évoquer le modèle MVC (Modèle-Vue-Contrôleur). Pour certains, il constitue la clé de voûte de toute application rigoureuse, tandis que pour d'autres, il représente une contrainte limitant l'organisation du code. Mais de quoi s'agit-il exactement ? Voici un aperçu clair :

Modèle d'organisation du code
- Modèle : gère les données. Il interagit avec la base de données et assure la logique métier.
- Vue : responsable de l'affichage. Elle formate les données pour l'utilisateur, généralement sous forme de pages HTML.
- Contrôleur : coordonne les interactions entre le modèle et la vue. Il traite les requêtes utilisateur et met à jour le modèle ou la vue en conséquence.
Dans Laravel :
- Modèle : correspond à une table de la base de données. C'est une classe qui étend la classe Model, permettant une gestion simple et efficace des données et l'établissement automatisé de relations entre tables.
- Contrôleur : se décline en deux catégories : contrôleur classique et contrôleur de ressource. Chaque type a ses spécificités que nous détaillerons dans le cours.
- Vue : peut être un simple fichier HTML ou utiliser le moteur de templates Blade de Laravel pour une gestion dynamique et sécurisée des affichages.
Laravel propose le modèle MVC, mais ne l'impose pas. Il peut être judicieux de s'en éloigner, car certaines fonctionnalités ne s'intègrent pas naturellement dans cette structure. Par exemple, où placer le code pour l'envoi d'e-mails ? Cela conduit souvent à une inflation du nombre de contrôleurs, auxquels on demande d'effectuer des tâches pour lesquelles ils ne sont pas conçus.
Livewire
Livewire modifie l'organisation traditionnelle du code MVC dans Laravel. Il permet de créer des composants dynamiques côté serveur sans nécessiter beaucoup de JavaScript, ce qui peut réduire la complexité des contrôleurs et des vues.
Programmation Orientée Objet (POO) avec Laravel
Laravel est un framework fondamentalement orienté objet. La programmation orientée objet (POO) est un paradigme qui se distingue radicalement de la programmation procédurale. En POO, le code est structuré en classes qui découlent d'interfaces établissant des contrats de fonctionnement. On manipule ainsi des objets, chacun ayant des responsabilités spécifiques.
Avec la POO, la responsabilité du fonctionnement est répartie entre les classes, contrairement à l'approche procédurale où tout est souvent mélangé. Cette répartition permet d'éviter la duplication de code, un problème fréquent en programmation procédurale. Laravel maximise cette répartition en utilisant l'injection de dépendances.
L'utilisation de classes bien définies, chacune ayant un rôle précis et pilotée par des interfaces claires, renforcée par l'injection de dépendances, permet d'obtenir un code élégant, efficace, lisible, facile à maintenir et à tester. C'est ce que propose Laravel. Bien que vous puissiez intégrer votre propre code, vous pouvez également vous inspirer des sources du framework pour améliorer votre style de programmation.
L'injection de dépendances vise à éviter que les classes soient trop interdépendantes, privilégiant ainsi une liaison dynamique à une liaison statique. Le résultat est un code plus lisible, plus facile à maintenir et à tester. Nous explorerons ce mécanisme dans Laravel et verrons comment il permet de créer une architecture de code robuste et modulaire facilitant la maintenance et l'évolution des applications. En comprenant et en maîtrisant ces concepts, vous pourrez pleinement tirer parti des avantages offerts par Laravel et améliorer la qualité et la lisibilité de votre propre code.
Popularité
Laravel s'est établi en quelques années au sommet de l'usage des frameworks PHP. Voici des statistiques relativement récentes basées sur la popularité :

En résumé
Un framework permet de gagner du temps et offre l'assurance d'utiliser des composants bien codés et fiables. Laravel se distingue comme un framework novateur et complet, qui exploite les dernières avancées de PHP, avec un code impeccable et une organisation exemplaire.
Sa documentation est exhaustive et précise, avec de nombreux tutoriels et exemples disponibles en ligne. Il adopte le modèle MVC sans l'imposer, offrant une flexibilité totale dans une approche entièrement orientée objet.
Par bestmomo
Aucun commentaire