Comment installer et utiliser Composer sur Ubuntu 18.04

Une version précédente de ce didacticiel a été écrite parBrennen Bearnes.

introduction

Composer est un outildependency management populaire pour PHP, créé principalement pour faciliter l'installation et les mises à jour des dépendances de projet. Il vérifiera les autres packages dont dépend un projet spécifique et les installera pour vous, en utilisant les versions appropriées en fonction des exigences du projet.

Dans ce tutoriel, vous allez installer et commencer à utiliser Composer sur un système Ubuntu 18.04.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

[[step-1 -—- installation-des-dépendances]] == Étape 1 - Installation des dépendances

Avant de télécharger et d’installer Composer, vous devez vous assurer que toutes les dépendances sont installées sur votre serveur.

Commencez par mettre à jour le cache du gestionnaire de paquets en lançant:

sudo apt update

Maintenant, installons les dépendances. Nous aurons besoin decurl pour télécharger Composer etphp-cli pour l'installer et l'exécuter. Le packagephp-mbstring est nécessaire pour fournir des fonctions à une bibliothèque que nous allons utiliser. git est utilisé par Composer pour télécharger les dépendances de projet etunzip pour extraire les packages compressés. Tout peut être installé avec la commande suivante:

sudo apt install curl php-cli php-mbstring git unzip

Une fois les conditions préalables installées, nous pouvons installer Composer lui-même.

[[step-2 -—- téléchargement-et-installation-composer]] == Étape 2 - Téléchargement et installation de Composer

Composer fournit uninstaller, écrit en PHP. Nous allons le télécharger, vérifier qu’il n’est pas corrompu, puis l’utiliser pour installer Composer.

Assurez-vous que vous êtes dans votre répertoire personnel, puis récupérez le programme d'installation à l'aide decurl:

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php

Ensuite, vérifiez que le programme d'installation correspond au hachage SHA-384 pour le dernier programme d'installation trouvé sur la pageComposer Public Keys / Signatures. Copiez le hachage de cette page et stockez-le en tant que variable shell:

HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061

Assurez-vous de remplacer le dernier hash par la valeur en surbrillance.

Exécutez maintenant le script PHP suivant pour vérifier que le script d’installation peut être exécuté en toute sécurité:

php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Vous verrez la sortie suivante.

Sortie

Installer verified

Si vous voyezInstaller corrupt, vous devrez retélécharger le script d'installation et vérifier que vous utilisez le hachage correct. Exécutez ensuite la commande pour vérifier à nouveau le programme d'installation. Une fois que vous avez un installateur vérifié, vous pouvez continuer.

Pour installercomposer globalement, utilisez la commande suivante qui téléchargera et installera Composer en tant que commande à l'échelle du système nomméecomposer, sous/usr/local/bin:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Vous verrez le résultat suivant:

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.6.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Pour tester votre installation, exécutez:

composer

Et vous verrez cette sortie afficher la version et les arguments de Composer.

Output   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.6.5 2018-05-04 11:44:59

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .

Ceci vérifie que Composer est installé correctement sur votre système et qu'il est disponible sur l'ensemble du système.

[.Remarque]##

Note: Si vous préférez avoir des exécutables Composer distincts pour chaque projet que vous hébergez sur ce serveur, vous pouvez l'installer localement, par projet. Les utilisateurs de NPM connaissent cette approche. Cette méthode est également utile lorsque votre utilisateur système n'est pas autorisé à installer le logiciel à l'échelle du système.

Pour ce faire, utilisez la commandephp composer-setup.php. Cela générera un fichiercomposer.phar dans votre répertoire actuel, qui peut être exécuté avec./composer.phar command.

Voyons maintenant comment utiliser Composer pour gérer les dépendances.

[[step-3 -—- using-composer-in-a-php-project]] == Étape 3 - Utilisation de Composer dans un projet PHP

Les projets PHP dépendent souvent de bibliothèques externes et la gestion de ces dépendances et de leurs versions peut s'avérer délicate. Composer résout ce problème en suivant vos dépendances et en facilitant leur installation par d’autres.

Pour utiliser Composer dans votre projet, vous aurez besoin d'un fichiercomposer.json. Le fichiercomposer.json indique à Composer quelles dépendances il doit télécharger pour votre projet et quelles versions de chaque package peuvent être installées. Cela est extrêmement important pour maintenir la cohérence de votre projet et éviter d'installer des versions instables qui pourraient éventuellement causer des problèmes de compatibilité ascendante.

Vous n’avez pas besoin de créer ce fichier manuellement, c’est facile de rencontrer des erreurs de syntaxe. Composer génère automatiquement le fichiercomposer.json lorsque vous ajoutez une dépendance à votre projet à l'aide de la commanderequire. Vous pouvez ajouter des dépendances supplémentaires de la même manière, sans qu'il soit nécessaire de modifier manuellement ce fichier.

Le processus d'utilisation de Composer pour installer un package en tant que dépendance dans un projet implique les étapes suivantes:

  • Identifiez le type de bibliothèque dont l'application a besoin.

  • Recherchez une bibliothèque open source appropriée surPackagist.org, le dépôt officiel de paquets pour Composer.

  • Choisissez le package sur lequel vous voulez compter.

  • Exécutezcomposer require pour inclure la dépendance dans le fichiercomposer.json et installez le package.

Essayons cela avec une application de démonstration.

Le but de cette application est de transformer une phrase donnée en une chaîne conviviale pour les URL - aslug. Ceci est couramment utilisé pour convertir les titres de page en chemins d'URL (comme la dernière partie de l'URL de ce tutoriel).

Commençons par créer un répertoire pour notre projet. Nous l'appelleronsslugify:

cd ~
mkdir slugify
cd slugify

Il est maintenant temps de rechercher dansPackagist.org un package qui peut nous aider à générerslugs. Si vous recherchez le terme «slug» sur Packagist, vous obtiendrez un résultat similaire à celui-ci:

Packagist Search: easy-slug/easy-slug

Vous verrez deux numéros à droite de chaque paquet dans la liste. Le nombre en haut représente le nombre de fois que le package a été installé, et le nombre en bas indique combien de fois un package a été mis en favoris surGitHub. Vous pouvez réorganiser les résultats de la recherche en fonction de ces chiffres (recherchez les deux icônes situées à droite de la barre de recherche). De manière générale, les paquets avec plus d'installations et plus d'étoiles ont tendance à être plus stables, car beaucoup de gens les utilisent. Il est également important de vérifier la pertinence de la description du paquet pour vous assurer que c'est ce dont vous avez besoin.

Nous avons besoin d’un convertisseur simple chaîne à chaîne. D'après les résultats de la recherche, le packagecocur/slugify semble être une bonne correspondance, avec un nombre raisonnable d'installations et d'étoiles. (Le paquet est un peu plus bas sur la page que ne le montre la capture d'écran.)

Les packages sur Packagist ont un nomvendor et un nompackage. Chaque package a un identifiant unique (un espace de noms) dans le même format que GitHub utilise pour ses référentiels, sous la formevendor/package. La bibliothèque que nous voulons installer utilise l'espace de nomscocur/slugif. Vous avez besoin de l'espace de noms pour pouvoir utiliser le package dans votre projet.

Maintenant que vous savez exactement quel package vous souhaitez installer, exécutezcomposer require pour l'inclure en tant que dépendance et générez également le fichiercomposer.json pour le projet:

composer require cocur/slugify

Vous verrez cette sortie lorsque Composer télécharge la dépendance:

OutputUsing version ^3.1 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing cocur/slugify (v3.1): Downloading (100%)
Writing lock file
Generating autoload files

Comme vous pouvez le constater à la sortie, Composer a automatiquement choisi la version du package à utiliser. Si vous vérifiez maintenant le répertoire de votre projet, il contiendra deux nouveaux fichiers:composer.json etcomposer.lock, et un répertoirevendor:

ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy   59 Jul 11 16:40 composer.json
-rw-rw-r-- 1 sammy sammy 2934 Jul 11 16:40 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Jul 11 16:40 vendor

Le fichiercomposer.lock est utilisé pour stocker des informations sur les versions de chaque package installées et pour garantir que les mêmes versions sont utilisées si quelqu'un d'autre clone votre projet et installe ses dépendances. Le répertoirevendor est l'endroit où se trouvent les dépendances du projet. Le dossiervendor n'a pas besoin d'être validé dans le contrôle de version - il vous suffit d'inclure les fichierscomposer.json etcomposer.lock.

[.note] #Lors de l'installation d'un projet contenant déjà un fichiercomposer.json, exécutezcomposer install afin de télécharger les dépendances du projet.
#

Voyons rapidement les contraintes de version. Si vous vérifiez le contenu de votre fichiercomposer.json, vous verrez quelque chose comme ceci:

cat composer.json
Output{
    "require": {
        "cocur/slugify": "^3.1"
    }
}
sam

Vous remarquerez peut-être le caractère spécial^ avant le numéro de version danscomposer.json. Composer prend en charge plusieurs contraintes et formats différents pour définir la version de package requise, afin de fournir une flexibilité tout en préservant la stabilité de votre projet. L'opérateur caret (^) utilisé par le fichiercomposer.json généré automatiquement est l'opérateur recommandé pour une interopérabilité maximale, aprèssemantic versioning. Dans ce cas, il définit3.1 comme la version minimale compatible et autorise les mises à jour de toute version future inférieure à4.0.

De manière générale, vous n’avez pas besoin de modifier les contraintes de version de votre fichiercomposer.json. Cependant, certaines situations peuvent nécessiter la modification manuelle des contraintes, par exemple lorsqu'une nouvelle version majeure de votre bibliothèque requise est publiée et que vous souhaitez la mettre à niveau, ou lorsque la bibliothèque que vous souhaitez utiliser ne suit pas le contrôle de version sémantique.

Voici quelques exemples pour vous aider à mieux comprendre le fonctionnement des contraintes de version de Composer:

Contrainte Sens Exemples de versions autorisées

^1.0

> = 1,0 <2,0

1.0, 1.2.3, 1.9.9

^ 1.1.0

> = 1,1,0 <2,0

1.1.0, 1.5.6, 1.9.9

~1.0

> = 1,0 <2,0,0

1.0, 1.4.1, 1.9.9

~ 1.0.0

> = 1,0,0 <1,1

1.0.0, 1.0.4, 1.0.9

1.2.1

1.2.1

1.2.1

1.*

> = 1,0 <2,0

1.0.0, 1.4.5, 1.9.9

1.2.*

> = 1,2 <1,3

1.2.0, 1.2.3, 1.2.9

Pour une vue plus détaillée des contraintes de version de Composer, consultezthe official documentation.

Voyons ensuite comment charger des dépendances automatiquement avec Composer.

[[step-4 -—- including-the-autoload-script]] == Étape 4 - Incluant le script de chargement automatique

Comme PHP ne charge pas automatiquement les classes, Composer fournit un script de chargement automatique que vous pouvez inclure dans votre projet pour obtenir le chargement automatique gratuit. Cela facilite beaucoup le travail avec vos dépendances.

La seule chose à faire est d'inclure le fichiervendor/autoload.php dans vos scripts PHP avant toute instanciation de classe. Ce fichier est automatiquement généré par Composer lorsque vous ajoutez votre première dépendance.

Essayons-le dans notre application. Créez le fichiertest.php et ouvrez-le dans votre éditeur de texte:

nano test.php

Ajoutez le code suivant qui introduit le fichiervendor/autoload.php, charge la dépendancecocur/slugify et l'utilise pour créer un slug:

test.php

slugify('Hello World, this is a long sentence and I need to make a slug from it!');

Enregistrez le fichier et quittez votre éditeur.

Maintenant, lancez le script:

php test.php

Cela produit la sortiehello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

Les dépendances ont besoin de mises à jour lors de la sortie de nouvelles versions. Voyons comment gérer cela.

[[step-5 -—- update-project-dependencies]] == Étape 5 - Mise à jour des dépendances du projet

Chaque fois que vous souhaitez mettre à jour les dépendances de votre projet vers des versions plus récentes, exécutez la commandeupdate:

composer update

Ceci vérifiera les versions les plus récentes des bibliothèques requises dans votre projet. Si une version plus récente est trouvée et qu'elle est compatible avec la contrainte de version définie dans le fichiercomposer.json, Composer remplacera la version précédente installée. Le fichiercomposer.lock sera mis à jour pour refléter ces changements.

Vous pouvez également mettre à jour une ou plusieurs bibliothèques spécifiques en les spécifiant comme suit:

composer update vendor/package vendor2/package2

Veillez à archiver vos fichierscomposer.json etcomposer.lock après avoir mis à jour vos dépendances afin que d'autres puissent installer ces versions plus récentes.

Conclusion

Composer est un outil puissant que chaque développeur PHP devrait posséder. Dans ce tutoriel, vous avez installé Composer et l'avez utilisé dans un projet simple. Vous savez maintenant comment installer et mettre à jour des dépendances.

En plus de fournir un moyen simple et fiable de gestion des dépendances de projets, il établit également un nouveau standard de facto pour le partage et la découverte des packages PHP créés par la communauté.

Related