Le Guide de l’apprenti (compositeur) Composer

L

Au temps-au temps, quand j’étais encore un bon neuneu 😆 , j’entendais beaucoup parler de Composer. Composer par-ci, Composer par là. gestionnaire de dépendance ici, gestionnaire de dépendance là-bas. J’étais révolté de ne savoir exactement de quoi parle le texte. Ma grande faim d’en découdre avec ce bidule m’a conduit à aller fouiller dans les régions les plus reculer de la planète web comme d’habitude (oui je passe la majeur partie de mon temps à me balader de liens en liens sur le toile :-D ). Parmi tout ce que j’ai pu trouver il y en a un qui m’a vraiment fait rougir 😳 . Le hic est qu’il est en Anglais. Pas de souci pour moi 😎 mais pour ceux dont la langue est un frein pour apprendre de nouveaux machins trucs, j’ai décidé de traduire ma trouvaille.

Cet article a été publié initialement par Daniel Pataki en anglais sur scotch.io

Depuis sa sortie le 1er mars 2012, Composer a acquis une grande popularité en apportant à PHP ce dont il avait cruellement besoin: la gestion des dépendances. Composer est essentiellement un moyen d’intégrer tous les logiciels tiers tels que les frameworks CSS, les plugins jQuery et autres dans votre projet.

Je suis sûr qu’il y a beaucoup de codeurs qui s’interrogent sur les avantages d’utiliser composer et beaucoup ont peur de faire le saut dans un nouveau système. Dans cet article, nous allons voir ce qu’est exactement Composer, ce qu’il fait et pourquoi c’est un excellent outil pour les projets PHP.

Nous allons d’abord nous intéresser à la gestion des dépendances, puis installer Composer. Nous jetterons un coup d’œil général à l’utilisation, puis étofferons certaines des bases. Allez on commence ?

Qu’est-ce que la gestion des dépendances ?

La gestion des dépendances est en fait un concept assez simple. Supposons que vous créez un site Web d’une page en utilisant le framework Foundation pour vos besoins Javascript et CSS. Comment vous assurez-vous que Foundation est ajouté à votre projet ?

L’approche habituelle est d’aller sur le site, de télécharger le paquet et de le placer quelque part dans votre projet. Jusqu’ici tout va bien. Maintenant, que faites-vous lorsque vous voulez mettre à jour la dernière version? Vous répétez la même chose, en écrasant l’ancienne version.

Supposons que cela continue pendant un moment et que vous réalisiez que quelque chose est cassé. Ils ont changé quelque chose à la Fondation et maintenant vous devez revenir en arrière, mais où? Vous devrez trouver les anciennes versions et commencer à les appliquer jusqu’à ce que vous trouviez la bonne.

Même si vous triez tout cela, disons que vous passez au projet de quelqu’un d’autre. Utilisent-ils aussi la Fondation? Si oui, où est-il installé et quelle version est-il?

Cela peut ne pas sembler être un gros problème pour un petit projet mais imaginer un projet avec 8-10 dépendances – ce qui n’est pas beaucoup. Gérer tout ce qui est modulaire devient impossible ou, à tout le moins, une perte de temps.

La gestion des dépendances résout ces problèmes en automatisant et en normalisant. La récupération de dépendances telles que Foundation, jQuery, Twig, Symphony, les modules de journalisation, etc. peut être effectuée par programmation. Des versions préférées peuvent également être désignées, ce qui protège contre les conflits.

Un gestionnaire de dépendances standardise la manière dont les packages sont stockés et d’où ils sont utilisés. En pratique, cela signifie que tout projet utilisant le même gestionnaire de dépendances suivra la même structure – au moins pour les dépendances.

Installation de Composer

Composer est disponible sur n’importe quel système que vous souhaitez. Sous Windows, vous devez utiliser le fichier d’installation de Composer que vous trouverez sur la page Mise en route. Sur les systèmes basés sur Linux, y compris OSX, vous pouvez utiliser la commande suivante pour l’installer localement:

curl -sS https://getcomposer.org/installer | php

Exécutez la commande ci-dessus à partir du répertoire de votre projet. Cela vous donnera un fichier composer.phar que vous pouvez utiliser dans ce répertoire. Je préfère installer la commande globalement afin que je puisse l’utiliser dans n’importe quel dossier que j’aime. Pour ce faire, émettez la commande suivante:

mv composer.phar /usr/local/bin/composer

Il y a deux choses qui pourraient mal tourner. Si vous avez besoin de privilèges admin ici, vous devrez exécuter cette commande avec sudo.

mv composer.phar /usr/local/bin/composer

Dans Yosemite, cette commande peut échouer car le répertoire usr n’existe pas. Dans ce cas, créez d’abord la structure de répertoire, puis déplacez le fichier comme d’habitude.

Une introduction à Composer

Il existe deux éléments distincts pour la gestion des dépendances avec Composer. Le premier est Composer lui-même qui est un outil de ligne de commande pour saisir et gérer les dépendances. Le second est Packagist – le référentiel principal de composer. C’est là que les paquets que vous souhaitez utiliser sont stockés.

Lorsque vous utilisez Composer, le cœur de votre gestion des dépendances sera un seul fichier JSON nommé composer.json. Les écrous et les boulons ressemblent à ceci:

{
    "name": "danielpataki/my_project",
    "description": "My New Project",
    "authors": [
        {
            "name": "Daniel Pataki",
            "email": "mail@mymail.com"
        }
    ],
    "require": {
        "monolog/monolog": "1.12.0"
    }
}

Les exigences de votre projet seront répertoriées dans la section require. Dans ce cas, j’ai demandé Monolog, un cadre populaire pour la journalisation des choses. Ce n’est pas parce que j’ai un fichier JSON avec cette information que je peux commencer à utiliser Monolog. Voici où la ligne de commande entre.

En utilisant le terminal, dans le dossier du projet, j’émets la commande composer install. Cela amènera toutes mes dépendances dans le projet et fera d’autres choses intéressantes.

Un répertoire vendor a été créé qui devrait contenir toutes les dépendances – y compris composer lui-même. La capture d’écran montre aussi monolog et psr qui est une dépendance de monolog en plus d’un fichier composer.lock.

À ce stade, vous pouvez commencer à utiliser vos dépendances, mais il y a beaucoup plus que nous pouvons apprendre et faire pour être plus efficace. Allons-y étape par étape et apprenons un peu plus sur Composer.

Spécification des versions

Dans notre code ci-dessus, nous voulions récupérer la version 1.12.0 spécifiquement, mais il peut y avoir des cas où nous voulons être un peu plus indulgent. Il y a six façons de spécifier la version que vous voulez, regardons-les:

Plage de version

En utilisant des opérateurs de comparaison, vous pouvez saisir une version supérieure à 1.3, inférieure à 1.8 ou suivre un ensemble de règles encore plus complexe en utilisant la logique ET et OU. Les opérateurs utilisés peuvent être >, <, >=, <= et !=. La logique ET est représentée par un espace ou une virgule, la logique OU est représentée par des doubles tuyaux: ||.

Spécifier > 2.7 signifierait n’importe quelle version au-dessus de 2.7. > 2,7 <= 3,5 permettraient n’importe quelle version au-dessus de 2,7 jusqu’à – et y compris – 3.5.

Versions génériques

En utilisant un caractère générique, vous pouvez spécifier un motif. 2.3.* Engloberait tout ce qui précède et incluant 2.3.0 et ci-dessous – mais n’incluant pas – 2.4.0. C’est équivalent à >=2.3.0 <2.4.

Intervalle de version

Les plages de traits d’union vous permettent de spécifier une plage plus facilement, bien qu’il soit un peu plus facile d’être confus à cause de la façon dont il gère les versions partielles. Une version complète se compose de trois chiffres, dans ce cas les fourchettes de tir font sens.

2.0.0 - 3.0.0 est une gamme inclusive qui signifie que toutes les versions ci-dessus et incluant 2.0.0 et ci-dessous et incluant 3.0.0 seront acceptées.

Les versions partielles comme 2.0 - 3.0 signifient n’importe quelle version ci-dessus – y compris – 2.0 jusqu’à la version 3.1.

La raison de ce comportement apparemment étrange est que le côté gauche est inclusif, le côté droit est complété par un caractère générique. L’expression ci-dessus serait équivalente à >= 2.1 <3.1.0

Plage de Tilde

Une plage de tilde est idéale pour cibler une version minimale requise et pour autoriser toute nouvelle version majeure. Si vous spécifiez ~3.6, vous autorisez 3.6 et tout jusqu’à, mais sans inclure 4.0.

Cette méthode de spécification d’une version est équivalente à >-3.6 <4.0.

Plage caret

La gamme de carets est destinée à permettre toutes les mises à jour sans rupture. Si un projet suit un versionnage sémantique, il ne devrait y avoir aucune amélioration qui rompt la compatibilité au sein d’une branche majeure. C’est-à-dire que toute chose ci-dessus et y compris une version majeure et ci-dessous et ne pas inclure la prochaine version majeure devrait être sûr à utiliser. En spécifiant ^3.3.5 vous autorisez n’importe quoi jusqu’à, mais sans inclure, 4.0.

Dev-Master

En spécifiant dev-master, vous saisissez la dernière version actuellement développée qui n’a pas encore été marquée avec un numéro de version. Cela peut être très bien en cours de développement, mais vous devez être conscient que le potentiel de bogues est plus élevé dans ces versions.

Locking (Verrouillage)

Le locking (verrouillage) des dépendances est l’une des fonctionnalités les plus utiles de Composer. J’ai mentionné le fichier composer.lock plus tôt. Ce que cela fait est de verrouiller les versions des composants utilisés.

Le fichier de verrouillage peut s’assurer que tout le monde travaille avec les mêmes versions de fichiers. Ce n’est pas parce que l’application ne doit pas tomber en panne à cause d’une mise à jour de composant que tous vos coéquipiers et votre serveur de production doivent tous exécuter des versions séparées.

Lorsque vous utilisez Composer pour la première fois pour récupérer une dépendance, il écrit la version exacte dans le fichier de verrouillage. Si vous avez spécifié 2.3.* Et 2.3.5 est la version la plus récente, la version installée sera 2.3.5 et elle sera entrée dans le fichier de verrouillage.

Supposons qu’un développeur rejoigne l’équipe 10 jours plus tard. A ce moment, la dépendance a été mise à jour en 2.3.6. S’il utilise la commande correcte (composer install), il recevra 2.3.5 parce qu’il est verrouillé en place.

Vous pouvez bien sûr décider de mettre à jour vos dépendances. Dans ce cas, vous devez exécuter composer update. Cela va récupérer les dernières versions autorisées et les écrire dans le fichier de verrouillage. Ce sera ensuite distribué à toutes les sources qui peuvent à leur tour être mis à jour.

Besoins de développement

Composer vous permet de spécifier les exigences de développement. Ceci est fait en spécifiant vos besoins dans le tableau require-dev au lieu du tableau require.

{
    "name": "danielpataki/my_project",
    "description": "My New Project",
    "authors": [
        {
            "name": "Daniel Pataki",
            "email": "mail@mymail.com"
        }
    ],
    "require": {
        "monolog/monolog": "1.12.0"
    },
    "require-dev" : {
        "fzaninotto/faker", "dev-master"
    }
}

Faker est une classe PHP qui génère de fausses données. C’est génial pour le développement mais en production ce n’est vraiment pas nécessaire.

Sachez que les exigences de développement sont toujours installées par défaut, Composer ne sait pas par magie quand il est exécuté sur votre serveur de production. Si vous souhaitez exclure des exigences de développement, vous devrez exécuter la commande install ou update avec l’option --no-dev.

Composer dans la nature

Composer est utilisé partout dans le monde PHP. Tous les grands composants de sites Web bien connus tels que jQuery, Foundation, Bootstrap, et même WordPress (Bientôt une longe serie pour faire de vous des as du CMS) lui-même ont un package composer disponible.

De plus, un code plus petit mais tout aussi utile peut être récupéré via composer. Journalisation des paquets tels que monolog, mailers PHP, classes de manipulation de chaînes, PHP Unit et d’autres outils aussi autour.

La communauté des Framework a grandement bénéficié de la capacité de Composer à unifier les exigences du projet. Les très appréciés Laravel, FuelPHP, Yii Framework et d’autres s’appuient sur composer pour rassembler des fonctionnalités partagées pour des projets.

Le plus grand avantage est bien sûr caché de la vue. Composer est génial lorsque vous devez partager ou déployer du code. Vous n’avez pas besoin de trimballer environ 20 à 50 Mo de code associé mais inutilisé. Vous pouvez simplement enregistrer les fichiers composer.json et composer.lock et tout le monde sera sur la même page en quelques minutes.

Conclusion

Il y a beaucoup plus de choses que vous pouvez faire avec Composer mais j’espère vous avoir donné un aperçu de son pouvoir. En plus de ce dont nous avons parlé, Composer vous offre un excellent chargement automatique, vous pouvez connecter des scripts à n’importe quelle étape des processus de mise à jour, etc.

Tout projet de groupe devrait utiliser Composer mais c’est très utile même si vous travaillez seul. Cela vous donne beaucoup de flexibilité et vous permet d’éprouver votre projet à l’avenir – vous ne savez jamais quand vous pourriez avoir besoin d’une main supplémentaire!

Je vous recommande aussi de ces liens :

A propos de l'auteur

François KOBON

Trois mots pour me décrire : Code - Build - Hack. Je réponds au nom de François KOBON. Partisan passionné de technologies/innovations libre et ouverte, d'Algorithme, de Datas, des Mathématiques, tous types de sciences... et surtout d'apprentissage non conventionnel parce je suis auto-didacte. Je suis membre de la communauté Ayiyikoh que vous pouvez retrouver en ligne sur ayiyikoh.org

2 commentaires

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Par François KOBON

François KOBON

Trois mots pour me décrire : Code - Build - Hack. Je réponds au nom de François KOBON. Partisan passionné de technologies/innovations libre et ouverte, d'Algorithme, de Datas, des Mathématiques, tous types de sciences... et surtout d'apprentissage non conventionnel parce je suis auto-didacte. Je suis membre de la communauté Ayiyikoh que vous pouvez retrouver en ligne sur ayiyikoh.org

Suivez-moi

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert