Si vous n'avez pas encore entendu parler de Composer, ou si vous vous demandez de quoi il s'agit : cet article est pour vous.

Présentation

Composer est un gestionnaire de dépendances de plus en plus utilisé pour les projets PHP. Si vous souhaitez installer un package, Composer se chargera automatiquement d'installer les autres paquets dont il dépend. Vous connaissez peut-être PEAR qui est également un gestionnaire de paquets ; c'est un outil équavalent mais vieillissant. En combinant l'utilisation de Composer avec votre outil de versionning, vous aurez la certitude de disposer de la même stack sur tous vos environnements. Ainsi, chaque développeur aura la même version des librairies du projet sur lequel il travaille. 

composer

Installation

Composer est distribué sous la forme d'un phar, vous pouvez le récupérer via la commande suivante :

	curl -sS https://getcomposer.org/installer | php

Petite astuce pour rendre l'installation "globale" : 

    sudo mv composer.phar /usr/bin/
    vim ~/.bash_profile
    alias composer="php /usr/bin/composer.phar"

Après avoir relancé le terminal, vous pourrez exécuter Composer à l'aide de la simple commande "composer". Sans cette manipulation, pour lancer l'outil, positionnez vous dans le dossier où vous l'avez téléchargé et exécutez la commande "php composer.phar".

Vous trouverez plus de détails concernant l'installation de Composer dans la documentation officielle.

Utilisation

Pour utiliser Composer, vous devez d'abord créer un fichier nommé composer.json. Ce fichier listera l'ensemble des fichiers à télécharger et devra se trouver à la racine de votre projet. Vous trouverez la liste complète des packages disponibles sur packagist.org. Prenons un exemple : si vous souhaitez installer silex et monolog voici à quoi ressemblera le fichier composer.json :

{
    "require": {
      "silex/silex": "dev-fat-13157",
      "monolog/monolog": "1.9.*"
    }
}

Une fois le fichier en place, installez les dépendances à l'aide de la commande suivante :

php composer.phar install

Votre projet contient maintenant :

  • un fichier composer.lock : liste les packages et versions installées
  • un dossier vendor : contient les sources des  packages

Dans votre workflow de développement, le dossier "vendor" ne doit pas être versionné, en revanche, les fichiers composer.lock et composer.json doivent l'être.

La commande "install" permet d'installer les versions des packages désirées (1.9.1 par exemple). Une fois les fichiers "composer.json" et "composer.lock" versionnés, chaque développeur devra lancer la commande "install" pour installer les packages et leurs dépendances. Si vous souhaitez mettre à jour la version d'un package, il faut exécuter la command "update" (afin de récupérer la version 1.9.2 par exemple),  c'est plutôt le rôle du lead dev (ou de l'architecte). Une fois la mise à jour validée, ce dernier commitera les fichiers et chaque développeur devra passer la commande "install" qui exécutera l'installation des packages à la version fixée dans le fichier "composer.lock".

Autoloading

Composer génère un fichier "autoload.php" (vendor/autoload.php) que vous pouvez inclure dans vos projets afin de manipuler les packages installés :

require 'vendor/autoload.php';

Cet autoload est bien réalisé et repsecte le standard PSR-0, je vous conseil donc de l'utiliser, à moins que vous ne disposiez déjà d'un autoload dans votre projet.

Cettte petite présentation de Composer est terminée. N'hésitez pas à apporter un retour d'exépérience en commentant cet article. Vous trouverez une cheat sheet contenant les commandes ici : http://composer.json.jolicode.com/.