Récemment, nous avons travaillé sur un nouveau projet qui nous a été confié : développer des fonctionnalités pour une application Laravel existante. Ce projet utilise un package Laravel appelé « Laravel Module ». Au fil de notre collaboration sur cette application, nous avons rapidement constaté les avantages de ce package : une meilleure lisibilité et une séparation plus nette du code, rendant ainsi l’application plus agréable à maintenir et à améliorer. Nous avons décidé de partager notre expérience en abordant le concept d’architecture modulaire et l’outil Laravel Module.
Problème de l’architecture par défaut de Laravel
Si Laravel offre une architecture de dossier efficace pour les projets de petite et moyenne envergure, la gestion devient plus complexe lorsque le projet s’étend et implique de multiples aspects métier. Voici les principaux défis rencontrés :
La navigation entre les fichiers devient ardue, rendant difficile la localisation de la logique métier.
L’identification des fonctionnalités spécifiques du projet devient floue avec une architecture de plus en plus complexe.
La maintenabilité et la compréhension du code s’en trouvent compromises, affectant la productivité des développeurs.
Comme l’a si bien souligné Addy Osmani :
Un bon code est comme une lettre d’amour destinée au prochain développeur qui va le maintenir.
Addy Ousmani
Il est donc essentiel de veiller à la lisibilité et à la clarté du code !
Architecture modulaire
Pour pallier aux problèmes de l’architecture basique de Laravel, nous préconisons l’adoption d’une approche modulaire. Le principe est simple : découper et regrouper les fichiers du projet selon des aspects logiques métier.
Voici un exemple d’architecture par défaut d’un projet.
Schéma d’architecture par défaut de Laravel
Nous pouvons identifier trois besoins métier : la gestion des utilisateurs, des clients, des devis/facturation.
Schéma d’architecture modulaire
Cette architecture comporte plusieurs avantages :
Amélioration de la lisibilité, de la maintenabilité et de la testabilité du code.
Possibilité de réutiliser les modules dans d’autres projets, favorisant ainsi l’efficacité du développement.
Scalabilité du projet, permettant l’ajout de nouveaux modules au fur et à mesure de l’évolution des besoins métier.
Isolation des erreurs, facilitant ainsi le processus de débogage et de correction des problèmes.
Mettre en place simplement
Avec Laravel il est possible de mettre en place simplement l’architecture modulaire notamment grâce au package nwidart/laravel-modules. C’est un outil largement utilisé dans la communauté Laravel, offrant une gestion efficace des modules au sein de votre application. Avec des fonctionnalités telles que la prise en charge des tests et la possibilité de désactiver ou activer des modules selon les besoins, ce package facilite grandement la structuration de votre projet et permet de gérer l’architecture modulaire simplement.
Conclusion
En adoptant une architecture modulaire avec le package Laravel Module, vous pouvez améliorer la lisibilité, la maintenabilité et la scalabilité de votre application Laravel, tout en facilitant la gestion des différents aspects métier. N’hésitez pas à explorer cette solution pour optimiser vos projets !
Pour des solutions personnalisées ou un ajout de fonctionnalités sur des solutions existante. Faites confiance à Unsolite pour s’adapter à vos besoin. Pour en savoir plus, contactez-nous.
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’internaute, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou la personne utilisant le service.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l’accès technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’internaute sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.