Seb-Info

Composer

Composer

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 :

https://getcomposer.org

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.json minimal s’il n’existe pas ;
  • Ajouter la dépendance monolog/monolog avec 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.json complet ;
  • 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

  1. Tu écris ou modifies ton composer.json
  2. Tu exécutes la commande composer install
  3. Composer lit composer.json, télécharge les dépendances et crée composer.lock
  4. Les autres développeurs récupèrent ton projet et exécutent aussi composer install
  5. Composer lit alors composer.lock pour 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

  1. 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
  1. Vérifie que le dossier vendor/ est bien ignoré grâce au fichier .gitignore.
  2. Envoie le projet sur GitHub.
  3. 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 install pour respecter le lock
  • Exécute composer update seulement 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 :

https://packagist.org

On y trouve des milliers de bibliothèques comme :

  • laravel/framework
  • symfony/http-foundation
  • phpmailer/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.

Connexion pour les utilisateurs enregistrés
   
Nouvel utilisateur ?
*Champ requis
Powered by WP-Members