Le PHP a souvent l’image d’un langage destiné aux bricoleurs. Cela était peut-être un peu vrai au tout début. Mais avec le temps, il s’équipe d’outils d’industrialisation tel que Composer. C’est un outil de gestion de dépendances écrit en PHP et publié sous licence Open Source. Le dépôt utilisé par défaut pour télécharger les dépendances est celui de Packagist.

Pour l’exécuter, il faut avoir PHP en ligne de commande. Néanmoins, un développeur l’a empaqueté dans un conteneur Docker et est exécuté avec PHP 7.

Composer peut récupérer les dépendances à partir un fichier composer.json qui décrit les composants nécessaires avec leur version et l’environnement où ils sont nécessaires. Voici un exemple très simple :

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

Pour lancer le téléchargement de ces dépendances 1, il faut demander à composer de les installer avec cette commande 2 :

$ docker run --rm -v /$(pwd):/app composer/composer install

Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing monolog/monolog (1.0.2)
    Downloading: 100%

Writing lock file
Generating autoload files

Comme cela avait été fait pour Docker Compose, il est possible de créer un alias 3 pour avoir l’impression que Composer est disponible sur la machine :

alias composer='docker run --rm -ti -v /`pwd`:`pwd` -w /`pwd` composer/composer'

Après un rechargement du bash, il est maintenant possible de gérer les dépendances de vos projets avec cette commande bien plus simple :

$ composer install

Avec cette astuce, il est donc possible d’utiliser le gestionnaire de dépendances Composer sans avoir réellement installé Composer ni PHP 7 !

  1. Ici simplement Monolog
  2. Le / devant $(pwd) n’est utile que sur MS Windows
  3. Via sa déclaration dans le fichier .bash_profile