Comment installer et utiliser Composer sur Ubuntu 16.04

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.

Ce didacticiel explique comment installer et démarrer avec Composer sur un système Ubuntu 16.04.

Conditions préalables

Pour ce tutoriel, vous aurez besoin de:

  • Un système sous Ubuntu 16.04

  • Accès au serveur en tant qu'utilisateur régulier avecsudo permission

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

Avant de télécharger et d'installer Composer, nous devons nous assurer que toutes les dépendances sont installées sur notre serveur.

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

sudo apt-get 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-get install curl php-cli php-mbstring git unzip

Vous pouvez maintenant passer à l'étape suivante.

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

Composer fournit un programme d'installation, écrit en PHP. Assurez-vous que vous vous trouvez dans votre répertoire personnel et récupérez le programme d'installation à l'aide decurl:

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

Ensuite, exécutez un court script PHP pour vérifier que le programme d'installation correspond au hachage SHA-384 du dernier programme d'installation trouvé sur la pageComposer Public Keys / Signatures. Vous devrez vous assurer que vous substituez le dernier hash à la valeur en surbrillance ci-dessous:

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

Sortie

Installer verified

Pour installercomposer globalement, utilisez ce qui suit:

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

Cela téléchargera et installera Composer en tant que commande à l'échelle du système nomméecomposer, sous/usr/local/bin. Le résultat devrait ressembler à ceci:

OutputAll settings correct for using Composer
Downloading 1.1.1...

Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Pour tester votre installation, exécutez:

composer

Et vous devriez obtenir une sortie semblable à celle-ci:

Output   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.1.1 2016-05-17 12:25:44

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.
. . .

Cela signifie que Composer a été installé avec succès sur votre système.

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

Dans ce cas, l'installation peut être effectuée, après téléchargement et vérification du script d'installation, comme ci-dessus, comme suit:

php composer-setup.php

Cela générera un fichiercomposer.phar dans votre répertoire actuel, qui peut être exécuté avec./composer.phar command.

[[step-3 -—- generation-the-composer-json-file]] == Étape 3 - Génération du fichier composer.json

Pour utiliser Composer dans votre projet, vous aurez besoin d'un fichiercomposer.json. Le fichiercomposer.json indique essentiellement à Composer quelles dépendances il doit télécharger pour votre projet et quelles versions de chaque package sont autorisées à ê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. Des dépendances supplémentaires peuvent également être ajoutées 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 généralement les étapes suivantes:

  • Identifier 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 forfait sur lequel vous voulez compter

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

Nous verrons comment cela fonctionne dans la pratique avec une simple 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

Recherche de paquets sur Packagist

Il est maintenant temps de rechercher dansPackagist.org un package qui peut nous aider à générer desslugs. 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 où le paquet a été installé, et le nombre en bas indique le nombre de fois où un paquet a été joué sur GitHub. 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 - est-ce vraiment ce que vous recherchez?

Ce dont nous avons besoin, c’est d’un simple convertisseur 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.)

Vous remarquerez que 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:vendor/package. La bibliothèque que nous voulons installer utilise l'espace de nomscocur/slugifyThe namespace is what we need in order to require the package in our project.

Exiger un colis

Maintenant que nous savons exactement quel package nous voulons installer, nous pouvons exécutercomposer require pour l'inclure en tant que dépendance et également générer le fichiercomposer.json pour le projet:

composer require cocur/slugify
OutputUsing version ^2.1 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing cocur/slugify (v2.1.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 May 17 10:24 composer.json
-rw-rw-r-- 1 sammy sammy 2894 May 17 10:24 composer.lock
drwxrwxr-x 4 sammy sammy 4096 May 17 10:24 vendor

Le fichiercomposer.lock est utilisé pour stocker des informations sur les versions de chaque package installées, et assurez-vous 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 doitnot ê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 qui contient déjà un fichiercomposer.json, vous devez exécutercomposer install afin de télécharger les dépendances du projet.
#

Comprendre 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": "^2.1"
    }
}

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éfinit2.1 comme la version minimale compatible et autorise les mises à jour de toute version future inférieure à3.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 de versioning 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, lisezthe official documentation.

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

Comme PHP ne gère pas automatiquement le chargement des classes, Composer fournit également 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 et la définition de vos propres espaces de noms.

La seule chose à faire est d'inclure le fichiervendor/autoload.php dans vos scripts PHP, avant toute instanciation de classe.

Revenons à l'exemple d'applicationslugify. Nous utiliseronsnano pour créer un scripttest.php dans lequel nous utiliserons la bibliothèquecocur/slugify:

nano test.php

test.php

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

Vous pouvez exécuter le script en ligne de commande avec:

php test.php

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

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

Chaque fois que vous souhaitez mettre à jour les dépendances de votre projet, il vous suffit d'exécuter 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, elle 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 exécutant:

composer update vendor/package vendor2/package2

Conclusion

Ce tutoriel couvrait l'essentiel pour démarrer avec Composer sur Ubuntu 16.04. Composer est un outil puissant que chaque développeur PHP devrait posséder.

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