Veuillez patienter...

Comprendre et utiliser composer

Bonjour,

Aujourd'hui, je voudrais vous expliquer comment utiliser Composer.

Tout d'abord, une petite définition :

Qu'est-ce que Composer ?

Composer est un logiciel gestionnaire de dépendances libre écrit en PHP. Il permet à ses utilisateurs de déclarer et d'installer les bibliothèques dont le projet principal a besoin. Le développement a débuté en avril 2011 et a donné lieu à une première version sortie le 1er mars 2012.

Issu de Wikipédia

Comment installer Composer ?

Pour Windows, il faut se rendre sur le site de Composer, pour le télécharger.

Pour les développeurs aguérris, nous pouvons l'installer en ligne de commande.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'baf1608c33254d00611ac1705c1d9958c817a1a33bce370c0595974b342601bd80b92a3f46067da89e3b06bff421f182') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Ou, via cURL :

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

Ou, via PHP :

$ php -r "readfile('https://getcomposer.org/installer');" | php

Ensuite, vous pouvez commencer à l'utiliser.

Comment utiliser Composer ?

Composer dispose de plusieurs paramètres, très utiles :

  1. require: ajoute la bibliothèque en paramètre au fichier composer.json et l'installe.

Lancer une commande du type :

composer require vendor/package

Aura pour effet d'ajouter la ligne suivante au fichier composer.json :

{
    "require": {
        "vendor/package": "1.*"
    }
}

Et installera les fichiers nécessaires à l'utilisation du paquet dans le répertoire vendor/package.

Vous pouvez aussi spécifier la version du paquet que vous souhaitez installer, comme ceci :

composer require vendor/package:2.*

Je conseille personnellement d'utiliser l'option --prefer-stable.

  1. install : installe toutes les bibliothèques du composer.json. Il s'agit de la commande à lancer pour installer toutes les dépendances d'un dépôt PHP.

  2. update : met à jour les bibliothèques du composer.json, selon les versions permises qui y sont mentionnées.

  3. remove : désinstalle une bibliothèque et la retire du composer.json.

Retrouvez l'ensemble des commandes disponibles sur la documentation officielle de Composer.

Qu'est ce que le fichier composer.json ?

C'est le fichier qui stocke tous les paquets (dépendances) d'un projet, ainsi que leurs versions, mais peut aussi être utilisé pour définir un projet quand il est publié sur Git, par exemple.

Voici à quoi ressemble ce fichier :

{
    "name": "your-vendor-name/package-name",
    "description": "A short description of what your package does",
    "require": {
        "php": "^7.2",
        "vendor/package": "1.*",
        "another-vendor/package": "1.*"
    }
}

A quoi sert le fichier composer.json ?

Ce fichier stocke toutes les dépendances d'un projet, sans avoir à physiquement les installer dans le répertoire vendor/, notamment lorsqu'il est stocké sur un gestionnaire de version (comme Git), ce qui réduit grandement la taille des ressources à stocker. Reste au développeur qui veut utiliser un projet, d'installer les dépendances, via un composer:install ou composer:update.`

Comment fonctionne Composer ?

Non seulement Composer permet de manager les dépendances d'un projet, mais il permet aussi d'autoloader tous les fichiers nécessaires à leur utilisation, c'est ce que le fichier vendor/autoload.php permet de réaliser.

require __DIR__ . '/vendor/autoload.php';

Voir la documentation de Composer sur l'autoloading

Comment ajouter son code à l'autoloader ?

En ajoutant une règle d'autoload dans le fichier composer.json, comme ceci :

{
    "autoload": {
        "psr-4": {"MyProjectName\\": "src/"}
    }
}

Comment utiliser Composer dans Symfony ?

Le Framework Symfony est un projet Composer ! Il peut tout à fait être installé via ce dernier, en ligne de commande, comme ceci :

Pour Symfony version < 3.4 :

composer create-project symfony/framework-standard-edition my_project_name

Pour Symfony version > 4.0 :

composer create-project symfony/website-skeleton my_project_name

Ces commandes auront pour effet de créer un répertoire my_project_name avec toutes les fichiers nécessaires pour programmer une application web. Voir la documentation officielle de Symfony

Les paquets développés par SensioLabs, composants de Symfony peuvent aussi être utilisés uns à un, selon vos besoins ! Voir les paquets sur Packagist

D'autres paquets tiers (anciennement appellés Bundles) peuvent aussi être installés via composer, voir la liste des Bundles sur packagist

Afin que le Framework charge ces paquets tiers, il faut aussi spécifier à Symfony quoi charger :

Pour Symfony < 3.4 :

// app/AppKernel.php
public function registerBundles()
{
  $bundles = [
    new VendorName\Path\To\Bundle(),
  ]

  return $bundles;
}

Pour Symfony > 4.0 :

// config/bundles.php
return [
    // 'all' means that the bundle is enabled for any Symfony environment
    VendorName\Path\To\Bundle::class => ['all' => true],
];

Notez que depuis la version 4, il n'est plus conseillé d'organiser le code en Bundles.

A très bientôt,

Mathieu