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:
-
Un serveur Ubuntu 18.04 configuré en suivantthe Ubuntu 18.04 initial server setup guide, y compris un utilisateur sudo non root et un pare-feu.
[[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écutez
composer 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:
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é.