Dans ce tutoriel, nous allons voir comment installer Composer sur votre VPS sous Linux (Debian ou Ubuntu). Composer est LE gestionnaire de dépendances de l'écosystème PHP, permettant d'installer et utiliser très facilement des librairies externes.

Pour parcourir la liste de toutes les librairies créées par la communauté, rendez-vous sur le site de Packagist.

Dépendances

  • PHP-CLI est une dépendance obligatoire, Composer étant un script PHP, vous devez l'avoir sur votre système: apt install php7.3-cli.
  • Git est obligatoire pour le bon fonctionnement de Composer, apt install git sur Linux.
  • curl est obligatoire pour le bon fonctionnement de Composer, apt install curl sur Linux.
  • unzip est obligatoire pour le bon fonctionnement de Composer, apt install unzip sur Linux.

Installation de Composer

Pour installer Composer sur votre serveur, suivez la procédure suivante :

  1. Connectez-vous à votre serveur, en administrateur.
  2. Entrez la commande: wget -O - https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Composer est présent sur votre système !

Vérification de l'installation de Composer

Vous pouvez vérifier que Composer a bien été installé avec en tapant la commande :

composer -n -V

Vous devriez voir quelque chose de ce genre :

Composer version 2.0.7 2020-11-13 17:31:06

Utilisation de Composer

Passons à l'utilisation de Composer, nous allons créer notre premier projet et ajouter une librairie externe.

Commencez par créer un nouveau répertoire pour le projet :

mkdir ~/composer-test
cd ~/composer-test

Maintenant, utilisons composer init pour initialiser Composer dans notre nouveau projet. Vous pouvez faire de même pour ajouter Composer à un projet déjà existant.

La commande composer init à besoin de recevoir au minimum de nom du projet. Celui-ci doit être normé, sur la forme: auteur/project (aucun espace et pas de majuscule!). Dans notre cas, nous allons créer un nouveau projet FirstComposer :

composer init -n --name seb/first-composer

Le commande va créer un fichier composer.json dans le projet. Ce fichier va contenir la définition des dépendances: de quel librairie à ton besoin et dans quelle version, pour le bon fonctionnement de notre code. Si vous consultez le contenu du fichier avec cat composer.json, vous devriez voir quelque chose comme :

{
    "name": "seb/first-composer",
    "require": {}
}

La section require contiendra la liste des librairies dont nous avons besoin. Ces librairies seront installées automatiquement par Composer, dans le répertoire vendor/. Vous ne devrez jamais éditer le contenu de ce répertoire, il est généré par Composer, toute modification sera écrasée !

Nous allons maintenant créer notre script PHP, qui utilisera Composer. Pour l'ajouter dans notre code, la documentation indique qu'il faut ajouter ce bout de code en haut de notre script :

<?php

require_once __DIR__ . '/vendor/autoloader.php'; // On demande à PHP de charger toutes les librairies gérées par Composer, pour pouvoir y faire appel dans notre projet. Rien de + à faire!

Créez le fichier index.php et ce morceau de code tout en haut.

Maintenant que Composer est ajouté dans notre code, utilisons le ! Une grande variété de librairies existent. Pour notre exemple, nous allons ajouter la librairie permettant de communiquer facilement avec l'API de mTxServ.

La librairie est nommé mtxserv/mtxserv-php. Pour installer une librairie, il faut utiliser la commande composer require. Dans notre cas, cela donne donc :

composer require mtxserv/mtxserv-php

Vous devriez voir, s'il n'y a aucune erreur :

Using version ^1.0 for mtxserv/mtxserv-php
./composer.json has been updated
Running composer update mtxserv/mtxserv-php
Loading composer repositories with package information
Updating dependencies
Lock file operations: 3 installs, 0 updates, 0 removals
  - Locking guzzle/guzzle (v3.9.3)
  - Locking mtxserv/mtxserv-php (v1.0.1)
  - Locking symfony/event-dispatcher (v2.8.52)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Downloading symfony/event-dispatcher (v2.8.52)
  - Downloading guzzle/guzzle (v3.9.3)
  - Downloading mtxserv/mtxserv-php (v1.0.1)
  - Installing symfony/event-dispatcher (v2.8.52): Extracting archive
  - Installing guzzle/guzzle (v3.9.3): Extracting archive
  - Installing mtxserv/mtxserv-php (v1.0.1): Extracting archive
3 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package guzzle/guzzle is abandoned, you should avoid using it. Use guzzlehttp/guzzle instead.
Generating autoload files

Et voila, la librairie est dans notre projet! Elle a été téléchargée par Composer dans le répertoire vendor/, à la racine du projet. Un fichier composer.lock a également été créé. Ce fichier est utilisé par Composer pour savoir quelle est la version exacte que vous voulez pour les librairies, vous ne devez jamais le modifier à la main.

Pour finir notre tutoriel, il ne nous reste plus qu'à tester que la librairie que vous venons d'ajouter est bien fonctionnelle dans le projet. Pour commencer, on consulte la documentation pour savoir comment l'utiliser: readme :

<?php

$client = \Mtxserv\Client::factory(array(
    'client_id'     => 'YOUR_CLIENT_ID',
    'client_secret' => 'YOUR_CLIENT_SECRET',
    'api_key'       => 'YOUR_API_KEY'
));

Si nous ajoutons ce code, il devrait donc fonctionner: la classe Client doit être trouvée par PHP. Editez le fichier index.php :

<?php

require_once __DIR__ . '/vendor/autoloader.php'; 

$client = \Mtxserv\Client::factory(array(
    'client_id'     => 'YOUR_CLIENT_ID',
    'client_secret' => 'YOUR_CLIENT_SECRET',
    'api_key'       => 'YOUR_API_KEY'
));

Il ne nous reste plus qu'à tester, vous ne devez avoir aucune erreur du type Uncaught Error: Class Mtxserv\Client not found :

php index.php

Vous commencez à comprendre l’intérêt de Composer ? Il va gérer vos librairies, leurs versions, leur incorporation dans notre projet, de manière automatique!