composer php

Compositeur en PHP

html

Gérer les bibliothèques, leurs dépendances et leurs versions est un problème que de nombreuses technologies et langages de programmation ont rencontré dans leur histoire. Le monde PHP a également connu des difficultés dans la gestion et la distribution des bibliothèques dans le passé. Découvrez comment gérer la gestion des paquets dans une application PHP en utilisant le gestionnaire de dépendances Composer dès maintenant.

Avant que PHP ne dispose d'un gestionnaire de dépendances, les développeurs devaient souvent "réinventer la roue". Au lieu d'utiliser les solutions existantes, ils ont décidé de mettre en œuvre certaines fonctionnalités par eux-mêmes. Dans d'autres cas, le logiciel utilisé n'était souvent pas mis à jour (les paquets devenaient peu sûrs) ou rassembler toutes les bibliothèques dépendantes générait simplement beaucoup de difficultés et prenait beaucoup de temps.

Après des années d'apathie dans ce domaine, également pour PHP, il a été décidé de développer une application permettant de le gérer librement – en suivant les traces de solutions telles que bundler pour le langage ruby, ou npm pour node.js, ou bien d'autres.

La réponse à ces problèmes a été Composer – un gestionnaire de paquets, bien connu parmi la communauté des développeurs PHP, et que je vais présenter dans cet article, surtout à ceux qui n'ont pas encore eu l'occasion de travailler avec lui.

Qu'est-ce que Composer

En termes simples, Composer n'est rien de plus qu'une application lancée depuis la ligne de commande (l'interface appelée CLI – Command Line Interface), écrite en PHP. Elle est conçue pour gérer les bibliothèques et scripts pour ce langage. Les premiers travaux de création ont débuté en 2011, et moins d'un an plus tard, ils ont été achevés avec la sortie de la première version alpha1 officielle (03.2012). La version stable actuelle est la 2.0.7, sortie en novembre 2020.

Quand l'utiliser

Compte tenu de ma propre expérience de travail avec les développeurs Drupal chez Droptica et des programmeurs PHP, je sais qu'il n'y a qu'un seul cas où il n'a vraiment pas de sens d'utiliser Composer – lorsque vous n'avez pas une seule dépendance envers une quelconque bibliothèque.

Bien entendu, de nos jours, il est difficile d'imaginer un projet qui ne tirerait parti d'aucune façon des réalisations d'autres programmeurs et mettrait en œuvre une fonctionnalité particulière à partir de zéro. En raison de ce qui précède, et à cause de la facilité d'utilisation et d'installation, Composer mérite d'être utilisé dans toutes les situations. Il offre un moyen facile de télécharger, mettre à jour ou résilier les dépendances pour la bibliothèque nécessaire à votre projet.

Comment l'installer

L'installation de Composer est relativement simple, à condition que vous ayez PHP 5.3.2 installé sur votre système (ou dans un conteneur approprié si vous, par exemple, utilisez des solutions comme Docker). Bien sûr, le processus lui-même varie en fonction du système d'exploitation que vous utilisez. Le processus d'installation détaillé peut être trouvé sur le site officiel de Composer.

Pour le système Windows, la solution la plus simple est de télécharger et de lancer le fichier Composer-Setup.exe et de suivre tout le processus d'installation. En revanche, pour les systèmes Linux/Unix/macOS, l'installation se déroule en plusieurs étapes. Tout d'abord, vous téléchargez et vérifiez le fichier .phar (PHP Archive):

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Gardez à l'esprit que le hash comparé varie avec chaque version publiée, alors comparez-le toujours avec la valeur publiée sur la page officielle avec les checksums.

Ensuite, vous exécutez l'installation, dans la version de base – localement

php composer-setup.php

ou pour une utilisation globale.

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

Dans la dernière étape, vous supprimez le fichier d'installation inutile.

php -r "unlink('composer-setup.php');"

Super, maintenant vous pouvez pleinement profiter des capacités de Composer dans votre système.

Comment l'utiliser

Composer, comme de nombreuses applications de ce type, offre de nombreuses fonctionnalités qu'il ne serait pas judicieux de mentionner dans cet article (des informations plus détaillées peuvent être trouvées dans la documentation officielle). Cependant, je voudrais présenter ici quelques commandes qui sont les plus utiles dans le travail quotidien d'un développeur.

Initialisation de projet

composer init

Avec cette commande, vous initialisez un nouveau projet en utilisant Composer. Après son exécution, vous créez le fichier composer.json, dans lequel toutes les données de votre projet sont stockées, telles que le nom du projet, les détails sur l'auteur et – surtout – toutes les bibliothèques utilisées par eux.

Installation d'un projet existant

Si vous avez déjà un projet existant (par exemple, vous avez cloné un dépôt existant), généralement une seule commande suffit pour installer tous les mêmes paquets que quelqu'un a publiés pour son application (la liste des versions installées des paquets est stockée dans le fichier composer.lock).

composer install

Ajout, suppression et mise à jour d'une bibliothèque

Le schéma de toutes ces commandes reste le même. En gros, seul le mot-clé pour une opération donnée change :

  • require - pour ajouter,
  • remove - pour supprimer,
  • update - pour mettre à jour un paquet.

Par exemple, pour ajouter une nouvelle bibliothèque en tant que dépendance à votre projet (en arrière-plan, les dépendances pour la bibliothèque que vous téléchargez sont également résolues), utilisez simplement la commande require :

composer require /

un exemple de commande pour mettre à jour le cœur de Drupal ressemblerait à ceci :

composer update drupal/core

Par exemple : supposons un scénario dans lequel vous créez une application pour générer des factures sous forme de fichiers .pdf, qui sont ensuite envoyées à une adresse e-mail. Bien sûr, vous ne voulez pas tout écrire à partir de zéro, mais ajouter les bibliothèques dont vous avez besoin de manière simple, donc vous utiliserez Composer. Tout d'abord, vous allez compléter une bibliothèque PDF, par exemple dompdf :

composer require dompdf/dompdf

C'est fait ! La commande ci-dessus installera la dernière version de cette bibliothèque dans votre projet, sans aucune intervention supplémentaire de votre part. Il est maintenant temps de gérer l'envoi des messages e-mail. Vous utiliserez également une solution prête à l'emploi ici – PHPMailer. Avant de faire cela, supposons que pour une raison quelconque vous ayez eu une mauvaise expérience avec cette bibliothèque dans la version la plus récente – 6, mais vous avez beaucoup travaillé avec la version 5. Cela ne pose aucun problème avec Composer – vous ajoutez ce dont vous avez besoin, en définissant une version majeure spécifique :

composer require phpmailer/phpmailer:"^5"

La syntaxe de Composer permet diverses désignations des versions nécessaires. Il peut également s'agir de versions mineures – vous pouvez pointer vers une branche spécifique, par exemple dev-develop, vers la branche develop dans une bibliothèque donnée. Vous pouvez également indiquer une version spécifique, par exemple 5.2.28, pour télécharger précisément celle-là, par exemple parce qu'elle est une version bien testée et fonctionnelle.

Après avoir exécuté les commandes ci-dessus, un répertoire vendor sera créé, contenant les bibliothèques téléchargées ainsi que leurs dépendances :

vendor

Le fichier composer.json sera également mis à jour en conséquence, et le fichier composer.lock sera généré. La structure finale dans le répertoire du projet est la suivante :

combo

Comme vous pouvez le voir, en ayant un ensemble de quelques commandes, vous pouvez essentiellement commencer à travailler avec succès sur n'importe quel projet – dans la plupart des cas, vous n'aurez besoin de rien d'autre, et toute la magie s'accomplit pour vous en arrière-plan.

Ce que vous obtenez

Composer est principalement un outil complet couramment utilisé dans les projets PHP, bien qu'il soit également écrit en PHP. C'est un avantage énorme parce que tout développeur potentiel rejoignant votre équipe ou l'entreprise avec laquelle vous envisagez de travailler l'a sûrement croisé et utilisé auparavant. L'installateur simple et l'exécution de commandes de base vous incitent franchement à l'utiliser dès le début lorsque vous travaillez sur n'importe quel projet.

De plus, la facilité avec laquelle vous pouvez installer n'importe quelle bibliothèque PHP tout en ayant une influence sur sa version ou les options de mise à jour permet de réaliser des économies importantes en termes de temps et de ressources disponibles des développeurs. Grâce à des paquets tels que sensiolabs/security-checker vous pouvez également vérifier indépendamment les mises à jour de sécurité disponibles, augmentant ainsi la sécurité de votre propre application. C'est typique pour notre travail quotidien; surtout lorsque, par exemple, nous assurons un suivi continu des sites web basés sur Drupal la capacité à mettre à jour rapidement en utilisant Composer est indispensable, et le processus lui-même est rapide et efficace.

Résumé

En tant que développeur expérimenté, je ne peux pas imaginer mon travail quotidien sans l'utilisation de Composer. Les outils tels que le gestionnaire de dépendances ou le gestionnaire de paquets sont communs dans de nombreuses technologies, y compris PHP. La multitude d'avantages, tels que le gain de temps, la facilité d'utilisation, et le contrôle simple sur les dépendances, me rendent plus efficace dans mon travail. Si vous voulez également vous concentrer uniquement sur le développement du code de votre propre application, et en même temps – suivre les normes communément utilisées, alors utilisez simplement Composer. C'est très facile.

3. Best practices for software development teams