Monorepo avec PHP : organisation du code pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction



Le développement en PHP commence souvent par un seul fichier index.php, mais à mesure que le projet grandit, il devient nécessaire de structurer le code. De nombreux développeurs sont confrontés au dilemme : tout stocker dans un seul dépôt (monorepo) ou diviser en plusieurs petits dépôts (multirepo). Dans cet article, nous allons explorer le concept de monorepo pour les projets PHP, montrer comment organiser le code pour les débutants et fournir des exemples pratiques.



Un monorepo est une approche où le code de plusieurs projets, bibliothèques ou composants est stocké dans un seul dépôt de système de contrôle de version (Git). Dans le contexte de PHP, cela signifie que votre site principal, votre API, vos paquets et vos utilitaires se trouvent dans un seul dossier. Cela simplifie la gestion des dépendances, le refactoring et le déploiement.



Dans cet article, vous apprendrez :

  • Ce qu'est un monorepo et pourquoi il est utile
  • Comment organiser la structure des dossiers pour PHP
  • Comment configurer Composer pour fonctionner avec un monorepo
  • Des exemples concrets d'organisation du code


Avantages du monorepo pour PHP



De nombreux développeurs PHP débutants pensent qu'un monorepo est un "dépotoir de code". En réalité, avec une bonne organisation, c'est un outil puissant. Voici les principaux avantages :



  • Simplicité de navigation : Tous les composants du projet se trouvent au même endroit. Pas besoin de basculer entre les dépôts.
  • Version unique des dépendances : Vous utilisez un seul fichier composer.json pour gérer les paquets, ce qui élimine les conflits de versions.
  • Commits atomiques : Les modifications dans l'API, le frontend et les bibliothèques peuvent être effectuées en un seul commit, ce qui simplifie les rollbacks.
  • Tests simplifiés : Les tests d'intégration sont plus rapides car tous les composants sont disponibles localement.
  • CI/CD unifié : Un seul pipeline de build pour l'ensemble du projet.


Cependant, le monorepo ne convient pas à tout le monde. Si votre équipe est nombreuse (plus de 20 personnes) ou si les projets diffèrent fortement en termes de technologies, il est préférable d'envisager un multirepo. Pour les débutants et les projets de taille moyenne, c'est un choix idéal.



Structure du monorepo : schéma de base



Créons une structure typique d'un monorepo PHP. Supposons que nous ayons une application web avec une API et plusieurs bibliothèques. Voici une hiérarchie de dossiers recommandée :



my-php-monorepo/├── apps/│   ├── web/               # Site principal (Laravel, Symfony ou PHP pur)│   │   ├── public/│   │   ├── src/│   │   └── config/│   └── api/               # Serveur API│       ├── public/│       ├── src/│       └── routes/├── packages/              # Bibliothèques et paquets internes│   ├── core/              # Cœur du système (classes de base)│   │   ├── src/│   │   └── composer.json│   ├── database/          # Gestion de la BDD (migrations, modèles)│   │   ├── src/│   │   └── composer.json│   └── utils/             # Utilitaires (validation, journalisation)│       ├── src/│       └── composer.json├── tests/                 # Tests globaux├── docker/                # Configurations Docker├── composer.json          # Composer racine├── composer.lock├── .gitignore└── README.md


Explication :

  • apps/ — contient les applications exécutables (sites, API, scripts console). Chaque application a son propre point d'entrée (public/index.php).
  • packages/ — paquets internes que vous développez. Ils sont connectés via composer.json en utilisant des dépôts de type path.
  • tests/ — tests racines (par exemple, tests d'intégration qui vérifient l'interaction entre les paquets).
  • docker/ — fichiers pour Docker (Dockerfile, docker-compose.yml).


Configuration de Co

Blogs

Book Recommendations