Comment installer et utiliser Composer sur Ubuntu 14.04

introduction

Composer est un outil de gestion des dépendances 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 tutoriel montrera comment installer et démarrer avec Composer sur un serveur Ubuntu 14.04.

Conditions préalables

Pour ce tutoriel, vous aurez besoin de:

  • Un serveur sous Ubuntu 14.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 etphp5-cli pour l'installer et l'exécuter. git est utilisé par Composer pour télécharger les dépendances de projet. Tout peut être installé avec la commande suivante:

sudo apt-get install curl php5-cli git

Vous pouvez maintenant passer à l'étape suivante.

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

L'installation de Composer est très simple et peut être effectuée avec une seule commande:

curl -sS https://getcomposer.org/installer | sudo 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:

Output#!/usr/bin/env php
All settings correct for using Composer
Downloading...

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.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00

Usage:
 command [options] [arguments]

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

. . .

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 pourriez héberger sur ce serveur, vous pouvez simplement l'installer localement, par projet. Cette méthode est également utile lorsque votre utilisateur système n'est pas autorisé à installer le logiciel à l'échelle du système. Dans ce cas, l'installation peut être effectuée aveccurl -sS https://getcomposer.org/installer | php - cela générera un fichiercomposer.phar dans votre répertoire actuel, qui peut être exécuté avecphp 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 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 paquet 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 ^1.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing cocur/slugify (v1.3)
    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 Sep  9 16:22 composer.json
-rw-rw-r-- 1 sammy sammy 2835 Sep  9 16:22 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Sep  9 16:22 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

composer.json

{
    "require": {
        "cocur/slugify": "^1.3"
    }
}

Vous remarquerez peut-être le caractère spécial^ avant le numéro de version surcomposer.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éfinit1.3 comme la version minimale compatible et autorise les mises à jour de toute version future inférieure à2.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, vérifiez leursofficial documentation.

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

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 allons créer un scripttest.php dans lequel nous utiliserons la bibliothèquecocur/slugify:

vim 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

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

Ce tutoriel couvrait l'essentiel pour bien démarrer avec Composer sur Ubuntu 14.04.