Composer : le gestionnaire de dépendances pour PHP
Objectif : comprendre à quoi sert Composer, comment l’installer et savoir utiliser les commandes de base pour un projet PHP.
Qu’est-ce que Composer ?
Composer est un outil qui permet de gérer automatiquement les bibliothèques PHP dont un projet a besoin.
Il télécharge, installe et met à jour les dépendances nécessaires à ton application.
En d’autres termes, Composer fait pour PHP ce que npm fait pour JavaScript ou pip pour Python.
- Il installe les bibliothèques dont ton projet a besoin
- Il gère les versions compatibles
- Il permet un chargement automatique des classes (autoload)
- Il assure la cohérence du projet entre tous les développeurs
Installation de Composer
Composer s’installe depuis le site officiel :
Une fois installé, tu peux vérifier la version avec la commande :
composer --version
Les fichiers principaux
📁 composer.json
Ce fichier décrit les dépendances du projet, son nom et d’autres informations.
{
"name": "monprojet/webapp",
"description": "Application web PHP moderne",
"require": {
"monolog/monolog": "^3.0",
"guzzlehttp/guzzle": "^7.0"
}
}
📁 composer.lock
Ce fichier est généré automatiquement et verrouille les versions exactes des bibliothèques installées, pour garantir la stabilité du projet.
📁 dossier vendor/
Ce dossier contient toutes les bibliothèques téléchargées par Composer, ainsi que le fichier autoload.php.
Différence entre composer.json et composer.lock
Objectif : comprendre le rôle de ces deux fichiers utilisés par Composer, le gestionnaire de dépendances PHP.
Vue d’ensemble
Composer utilise deux fichiers complémentaires :
| Fichier | Rôle principal | Édité par | Contenu |
|---|---|---|---|
| composer.json | Décrit ce que tu veux | Le développeur | Liste des dépendances souhaitées et leurs contraintes de version |
| composer.lock | Décrit ce que tu as réellement | Généré automatiquement par Composer | Versions exactes installées pour garantir la reproductibilité |
Le fichier composer.json : le contrat du projet
Ce fichier est créé par le développeur. Il indique les dépendances nécessaires à l’application et les versions compatibles.
{
"require": {
"monolog/monolog": "^3.0",
"guzzlehttp/guzzle": "^7.0"
}
}
Ici, le symbole ^ signifie “toute version compatible à partir de 3.0”.
Autrement dit, Composer pourra installer la version 3.0, 3.1, 3.4, etc., mais pas la 4.0 (rupture de compatibilité).
Génération automatique du fichier composer.json
Dans certains cas, le fichier composer.json n’est pas créé manuellement par le développeur.
Composer peut le générer automatiquement lorsqu’on installe une dépendance ou un framework.
Exemple avec une bibliothèque simple (par exemple : monolog -> gestion des logs)
Si tu exécutes la commande suivante dans un dossier vide :
composer require monolog/monolog
Composer va automatiquement :
- Créer un fichier
composer.jsonminimal s’il n’existe pas ; - Ajouter la dépendance
monolog/monologavec une contrainte de version ; - Télécharger les fichiers nécessaires dans le dossier
vendor/.
Le fichier généré ressemblera à ceci :
{
"require": {
"monolog/monolog": "^3.0"
}
}
Tu n’as donc pas besoin de créer toi-même le fichier : Composer s’en charge.
Exemple avec un framework complet (Laravel)
Quand tu veux créer une nouvelle application Laravel, tu peux utiliser la commande :
composer create-project laravel/laravel monprojet
Dans ce cas, Composer télécharge un modèle de projet complet (appelé skeleton) qui contient déjà :
- un fichier
composer.jsoncomplet ; - un fichier
composer.lock; - un dossier
vendor/avec toutes les dépendances Laravel ; - la structure MVC de base du framework.
Tu peux ensuite vérifier le contenu du composer.json généré :
{
"name": "laravel/laravel",
"type": "project",
"require": {
"php": "^8.2",
"laravel/framework": "^11.0",
"fakerphp/faker": "^1.9.1",
"guzzlehttp/guzzle": "^7.0.1"
}
}
Ici, tu n’as rien à écrire : le fichier composer.json provient directement du modèle Laravel téléchargé.
3. En résumé
| Situation | Création du composer.json |
Exemple |
|---|---|---|
| Projet vide → tu veux initialiser Composer | Créé via composer init |
composer init |
| Tu installes directement une dépendance | Créé automatiquement par Composer | composer require monolog/monolog |
| Tu crées un projet avec un framework (ex. Laravel) | Déjà inclus dans le modèle téléchargé | composer create-project laravel/laravel monapp |
Conclusion :
Composer peut générer le fichier composer.json de plusieurs façons, mais il reste toujours le cœur du projet PHP, décrivant les bibliothèques utilisées et leurs versions.
Le fichier composer.lock : l’état réel du projet
Ce fichier est généré automatiquement après une installation (composer install ou composer update).
Il contient les versions exactes des bibliothèques effectivement installées, avec leurs dépendances internes.
{
"packages": [
{
"name": "monolog/monolog",
"version": "3.4.0"
},
{
"name": "guzzlehttp/guzzle",
"version": "7.9.2"
}
]
}
Tu ne modifies jamais ce fichier à la main.
Il garantit que tous les développeurs du projet utilisent les mêmes versions.
Comment ils fonctionnent ensemble
- Tu écris ou modifies ton
composer.json - Tu exécutes la commande
composer install - Composer lit
composer.json, télécharge les dépendances et créecomposer.lock - Les autres développeurs récupèrent ton projet et exécutent aussi
composer install - Composer lit alors
composer.lockpour installer exactement les mêmes versions
Comment partager un projet PHP utilisant Composer avec GitHub
Ce qu’il faut pusher sur GitHub
| Élément | Rôle | Doit être poussé ? |
|---|---|---|
| composer.json | Décrit les dépendances du projet | ✅ Oui |
| composer.lock | Verrouille les versions exactes des dépendances | ✅ Oui |
| Ton code source (PHP, HTML, CSS, JS…) | Le cœur de ton application | ✅ Oui |
Ces fichiers permettent à d’autres développeurs de recréer exactement le même environnement en exécutant :
composer install
Ce qu’il ne faut pas pusher
| Élément | Rôle | Doit être poussé ? |
|---|---|---|
| /vendor/ | Contient toutes les bibliothèques téléchargées par Composer | ❌ Non |
| Fichiers temporaires, logs, caches | Spécifiques à ta machine locale | ❌ Non |
Le dossier vendor/ est recréé automatiquement par Composer à partir du fichier composer.lock.
Il est souvent volumineux et inutile dans le dépôt Git.
Exemple de fichier .gitignore
Pour indiquer à Git de ne pas pusher le dossier vendor/, il faut créer un fichier .gitignore à la racine du projet avec le contenu suivant :
/vendor/
/.idea/
/node_modules/
/.env
Étapes pour partager ton projet sur GitHub
- Initialise ton dépôt Git :
git init
git add .
git commit -m "Initialisation du projet PHP avec Composer"
git branch -M main
git remote add origin https://github.com/toncompte/tonprojet.git
git push -u origin main
- Vérifie que le dossier
vendor/est bien ignoré grâce au fichier.gitignore. - Envoie le projet sur GitHub.
- Un autre développeur peut ensuite cloner ton projet et exécuter :
git clone https://github.com/toncompte/tonprojet.git
cd tonprojet
composer install
Composer va lire le fichier composer.lock et reconstruire automatiquement le dossier vendor/ avec les bonnes versions.
Bonnes pratiques
- Ne modifie jamais
composer.lockà la main - Exécute
composer installpour respecter lelock - Exécute
composer updateseulement si tu veux changer les versions - Commite toujours les deux fichiers dans ton dépôt Git
Grâce à ces deux fichiers, ton projet PHP reste stable, reproductible et facile à maintenir 🚀
Commandes essentielles
| Commande | Fonction |
|---|---|
composer init |
Crée un fichier composer.json interactif |
composer install |
Installe les dépendances listées dans composer.json |
composer update |
Met à jour les dépendances à leurs dernières versions compatibles |
composer require vendor/package |
Ajoute une dépendance (par exemple composer require monolog/monolog) |
composer remove vendor/package |
Supprime une dépendance |
composer dump-autoload |
Régénère l’autoloader si nécessaire |
L’autoload (chargement automatique)
Grâce à Composer, plus besoin d’utiliser des require manuels.
Tu peux simplement inclure le fichier d’autoload et utiliser les classes :
<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('app');
$log->pushHandler(new StreamHandler('app.log', Logger::INFO));
$log->info('Application démarrée');
?>
Où Composer trouve les paquets
Composer s’appuie sur le dépôt officiel Packagist :
On y trouve des milliers de bibliothèques comme :
laravel/frameworksymfony/http-foundationphpmailer/phpmailer
En résumé
- Composer = gestionnaire de dépendances PHP
- composer.json = liste des bibliothèques utilisées
- Packagist = dépôt central des packages PHP
- vendor/autoload.php = chargement automatique des classes
Équivalents dans d’autres langages :
- npm → JavaScript
- pip → Python
- maven → Java
- nuget → .NET
Conclusion
Composer est un outil indispensable pour tout développeur PHP moderne.
Il facilite la maintenance, la mise à jour et la portabilité des projets, tout en favorisant les bonnes pratiques de développement.
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.