Développement

Composer PHP : guide complet de gestion des dépendances 2026

Publié le 31 March 2026 — 4 min de lecture
En bref

Maîtrisez Composer PHP : composer.json, commandes essentielles, autoloading PSR-4, packages recommandés et intégration dans un projet WordPress.

Introduction : Composer, l’outil indispensable du développeur PHP moderne

Composer est le gestionnaire de dépendances standard pour PHP, créé en 2012 et devenu incontournable dans l’écosystème PHP moderne. Il permet de déclarer les bibliothèques dont votre projet dépend et les gère (installation, mise à jour) automatiquement. En 2026, travailler sur un projet PHP sans Composer est l’exception. Ce guide couvre tout : installation, composer.json, autoloading, commandes du quotidien et intégration WordPress.

Installer Composer

# Installation globale (recommandée)
# Linux/macOS
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

# Vérifier l'installation
composer --version
# Composer version 2.x.x

# Windows : télécharger Composer-Setup.exe sur getcomposer.org

composer.json et composer.lock

Le fichier composer.json décrit votre projet et ses dépendances. Le fichier composer.lock enregistre les versions exactes installées pour assurer la reproductibilité.

{
  "name": "mon-entreprise/mon-projet",
  "description": "Description de mon projet PHP",
  "type": "project",
  "license": "proprietary",
  "require": {
    "php": "^8.2",
    "guzzlehttp/guzzle": "^7.8",
    "monolog/monolog": "^3.5",
    "nesbot/carbon": "^3.0"
  },
  "require-dev": {
    "phpunit/phpunit": "^11.0",
    "phpstan/phpstan": "^1.10"
  },
  "autoload": {
    "psr-4": {
      "MonProjet": "src/"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "MonProjetTests": "tests/"
    }
  },
  "scripts": {
    "test": "phpunit",
    "analyse": "phpstan analyse src --level=8",
    "post-install-cmd": [
      "@php artisan clear-compiled"
    ]
  },
  "config": {
    "optimize-autoloader": true,
    "sort-packages": true
  }
}

Commitez toujours composer.lock dans votre dépôt Git. Ne commitez jamais le dossier vendor/ (ajoutez-le au .gitignore).

Commandes Composer essentielles

# Installer les dépendances (depuis composer.json)
composer install

# Installer en production (sans dev, optimisé)
composer install --no-dev --optimize-autoloader

# Ajouter un package
composer require vendor/package
composer require vendor/package:^2.0

# Ajouter un package de développement
composer require --dev phpunit/phpunit

# Mettre à jour tous les packages
composer update

# Mettre à jour un package spécifique
composer update vendor/package

# Supprimer un package
composer remove vendor/package

# Régénérer l'autoloader
composer dump-autoload
composer dump-autoload --optimize  # plus rapide en production

# Vérifier les dépendances obsolètes
composer outdated

# Afficher les infos d'un package
composer show vendor/package

# Valider le composer.json
composer validate

Autoloading PSR-4 avec Composer

L’autoloading PSR-4 permet de charger automatiquement les classes PHP sans require/include manuel.

// Structure avec PSR-4 autoloading
src/
├── Services/
│   ├── EmailService.php      (namespace: MonProjetServices)
│   └── PaymentService.php
├── Models/
│   └── User.php              (namespace: MonProjetModels)
└── Controllers/
    └── HomeController.php    (namespace: MonProjetControllers)

// Dans src/Services/EmailService.php
<?php
namespace MonProjetServices;

use MonologLogger;

class EmailService
{
    private Logger $logger;
    
    public function __construct(Logger $logger)
    {
        $this->logger = $logger;
    }
    
    public function send(string $to, string $subject, string $body): bool
    {
        $this->logger->info("Envoi email à {$to}");
        // Logique d'envoi
        return true;
    }
}

// Dans votre point d'entrée
require_once __DIR__ . '/vendor/autoload.php';
// Maintenant MonProjetServicesEmailService est disponible automatiquement
$emailService = new MonProjetServicesEmailService($logger);

Scripts Composer

// Dans composer.json
"scripts": {
    "test": "phpunit --colors=always",
    "test-coverage": "phpunit --coverage-html coverage",
    "analyse": "phpstan analyse",
    "cs-fix": "php-cs-fixer fix src",
    "build": [
        "@cs-fix",
        "@analyse",
        "@test"
    ],
    "post-update-cmd": "echo 'Update terminé !'",
    "post-install-cmd": "@php bin/console cache:clear"
}

// Exécution
composer test
composer build
composer run-script cs-fix

Packages recommandés en 2026

Package Usage Alternatives
guzzlehttp/guzzle Client HTTP symfony/http-client
monolog/monolog Logging PSR-3 analog/analog
nesbot/carbon Manipulation dates PHP 8.3 natif
vlucas/phpdotenv Variables .env symfony/dotenv
phpunit/phpunit Tests unitaires pest-php/pest
phpstan/phpstan Analyse statique vimeo/psalm
symfony/console CLI commands league/climate

Composer dans un projet WordPress

// composer.json pour un projet WordPress (approche Bedrock/roots)
{
  "name": "mon-site/wordpress",
  "require": {
    "php": "^8.2",
    "johnpbloch/wordpress": "^6.7",
    "wpackagist-plugin/woocommerce": "^9.0",
    "wpackagist-plugin/wordpress-seo": "^23.0",
    "wpackagist-theme/twentytwentyfour": "^1.0"
  },
  "repositories": [
    {
      "type": "composer",
      "url": "https://wpackagist.org",
      "only": ["wpackagist-plugin/*", "wpackagist-theme/*"]
    }
  ],
  "extra": {
    "installer-paths": {
      "web/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
      "web/wp-content/themes/{$name}/": ["type:wordpress-theme"],
      "web/": ["type:wordpress-core"]
    }
  }
}

Pour des développements PHP et WordPress de qualité professionnelle, notre développeur PHP Paris vous accompagne.

Questions fréquentes sur Composer PHP

Quelle est la différence entre composer install et composer update ?

composer install installe les dépendances selon le composer.lock (versions exactes figées), idéal en production pour garantir la reproductibilité. composer update met à jour les packages vers les dernières versions compatibles avec les contraintes du composer.json et régénère le composer.lock. Utilisez toujours install en production et update uniquement en développement après avoir testé.

Comment gérer les conflits de dépendances avec Composer ?

Quand Composer signale un conflit, la commande composer why-not vendor/package:version explique pourquoi une version spécifique ne peut pas être installée. Souvent, la solution est de mettre à jour le package conflictuel avec composer update package-conflictuel ou d’assouplir les contraintes de version (^1.0 au lieu de ~1.0.5). L’outil composer diagnose détecte les problèmes courants.

Le dossier vendor/ doit-il être commité dans Git ?

Non. Ajoutez /vendor à votre .gitignore. Seuls composer.json et composer.lock doivent être versionnés. En production, exécutez composer install --no-dev --optimize-autoloader lors du déploiement (dans votre pipeline CI/CD). Le dossier vendor peut peser plusieurs centaines de Mo et contenir des milliers de fichiers inutiles à versionner.

Puis-je utiliser Composer avec PHP 7.x en 2026 ?

Techniquement oui, mais PHP 7.4 est en fin de vie depuis novembre 2022. De nombreux packages modernes requièrent désormais PHP 8.1+ minimum. Si votre hébergement ne supporte pas PHP 8.x, migrez en priorité : les nouvelles fonctionnalités (fibers, enums, readonly properties, intersection types) et les gains de performance (+30% vs PHP 7.4) justifient amplement la mise à jour.

W
Rédigé par
WebEngine
Développeur web freelance à Paris spécialisé WordPress, WooCommerce et SEO technique depuis 2010. 13 avis vérifiés · Note 5/5. Chaque site livré atteint un score PageSpeed mobile supérieur à 90.

Un projet en tête ?

Devis gratuit sous 48h, sans engagement.

Demander un devis gratuit