Composer pour débutants en PHP : Dépendances et autoloading
Vous commencez un nouveau projet PHP et avez besoin d'une bibliothèque pour la journalisation ou les requêtes HTTP. Vous copiez-collez du code, mais cela devient rapidement désordonné. Comment gérer correctement les bibliothèques externes ? Composer résout ce problème en gérant les dépendances et l'autoloading pour vous. Dans ce guide, vous apprendrez à utiliser Composer à partir de zéro.
Qu'est-ce que Composer ?
Composer est un gestionnaire de dépendances pour PHP. Il vous permet de déclarer les bibliothèques dont votre projet dépend et les gère pour vous. Ce n'est pas un gestionnaire de paquets comme apt ou yum ; il fonctionne par projet, en installant les dépendances dans un répertoire vendor.
Installation de Composer
Tout d'abord, vérifiez si Composer est déjà installé en exécutant composer --version dans votre terminal. Sinon, téléchargez et installez-le depuis getcomposer.org. Sous Windows, utilisez l'installateur Composer-Setup.exe. Sous macOS/Linux, exécutez le script d'installation.
Création d'un fichier composer.json
Chaque projet Composer possède un fichier composer.json qui décrit les dépendances. Vous pouvez en créer un manuellement ou exécuter :
composer init
Cette commande interactive demande le nom du package, la description, l'auteur et les dépendances. Pour l'instant, vous pouvez ignorer l'ajout de dépendances et modifier le fichier plus tard.
Ajout de dépendances
Pour ajouter une bibliothèque, utilisez composer require. Par exemple, pour ajouter la populaire bibliothèque de journalisation monolog/monolog :
composer require monolog/monolog
Composer téléchargera la bibliothèque et ses dépendances dans le répertoire vendor et mettra à jour composer.json et composer.lock.
Comprendre les contraintes de version
Composer utilise le versionnage sémantique. Contraintes courantes :
^1.2autorise les mises à jour vers1.xmais pas2.0(recommandé pour les bibliothèques).~1.2autorise les mises à jour vers1.2.xmais pas1.3.1.2.*autorise n'importe quelle version1.2.x.>=1.2autorise toute version supérieure ou égale à1.2.