Gestion de paquetage facile avec Composer

Regardons les choses en face: PHP a une histoire mouvementée en matière de gestion des paquets et il est donc assez rare de trouver un développeur qui utilise activement des systèmes comme PEAR. Au lieu de cela, la plupart des développeurs ont choisi leur framework préféré, dans lequel du code a été écrit spécialement pour gérer diverses choses, telles que l'interaction avec la base de données, les ORM, l'intégration OAuth, Amazon S3, etc..

L'inconvénient ici, cependant, est que changer de framework (ou ne plus utiliser de framework du tout) peut être un cauchemar, car cela implique de tout réapprendre pour utiliser de nouveaux outils - et ce n'est pas une tâche facile. Eh bien, le compositeur peut résoudre ce problème!


introduction

"La colle entre tous les projets."

Composer cherche à résoudre cette situation en se positionnant comme "le ciment entre tous les projets", ce qui signifie que les packages peuvent être écrits, développés et partagés dans un format que d'autres développeurs peuvent facilement brancher à d'autres applications..

Cet article vise à vous montrer comment installer et utiliser des packages Composer. À la fin de cet article, vous serez capable de brancher et de jouer avec des morceaux de code dans n'importe quel framework, que vous travailliez avec CodeIgniter, FuelPHP, Laravel, Symfony2, Lithium, Yii, Zend… ou toute autre chose..


Étape 1 - Installation de Composer

Composer comporte deux parties logiques principales: un référentiel stockant les packages, puis l'application en ligne de commande, qui vous aide à rechercher, télécharger, mettre à jour et partager du code..

Installer l'application sur tout ce qui est Unix, c'est facile:

$ cd / chemin / vers / mon / projet $ curl -s http://getcomposer.org/installer | php

C'est aussi simple que ça! Vous aurez maintenant un composer.phar fichier répertorié dans votre projet, qui contient toute la logique de l'utilitaire de ligne de commande.

Vous pouvez confirmer son installation en lançant:

$ php composer.phar

Cette commande révélera toutes les commandes disponibles.

Une de mes préférences personnelles est d'exécuter une commande supplémentaire:

$ sudo mv composer.phar / usr / bin / composer

Ce se déplace le fichier dans votre corbeille, ce qui vous permet d'accéder à toutes les commandes avec l'exemple beaucoup plus court:

$ compositeur sur

Si vous utilisez Windows, vous pouvez simplement télécharger ce fichier et l'exécuter via l'interpréteur PHP, où qu'il soit installé..


Étape 2 - Compréhension composer.json

Si vous êtes un développeur Ruby, vous serez probablement familiarisé avec le Gemfile. Ou, les développeurs de nœuds sauront package.json. De même, Composer utilise un composer.json fichier pour spécifier les paramètres et les exigences de paquet pour votre application.

Dans sa forme la plus élémentaire, le fichier composer ressemblera à ceci:

"require": "kriswallsmith / assetic": "*" "

Cela nécessitera le paquetage "Assetic", créé par "kriswallsmith", et nécessitera n'importe quelle version. Pour spécifier une version spécifique, vous pouvez utiliser à la place:

"kriswallsmith / assetic": "1.0.3"

Vous pouvez même combiner les deux approches, comme suit:

"kriswallsmith / assetic": "1.0. *"

Cela permettra à toute mise à jour mineure d'être automatiquement incluse, mais ne sera pas mise à niveau vers la version 1.1.0, car cela pourrait entraîner certaines modifications de l'interface qu'un développeur devra surveiller..


Étape 3 - Configuration requise pour l'installation

Maintenant que vous avez un ou plusieurs paquets listés dans votre composer.json, tu peux courir:

$ php composer.phar installer

… Ou, si vous avez utilisé mon astuce pour la raccourcir sur des machines Unix (voir ci-dessus):

$ compositeur installer

Vous remarquerez maintenant que les fichiers sont téléchargés et placés dans une nouvelle vendeurs/ dossier à la racine de votre application. Cette logique peut être modifiée à l'aide de l'option de configuration suivante:

"require": "kriswallsmith / assetic": "1.0. *", "config": "vendor-dir": "packages"

Étape 4 - Chargement automatique

Le chargement automatique en PHP est un peu en désordre depuis un certain temps.

Le chargement automatique en PHP est un peu en désordre depuis un certain temps, chaque développeur ayant sa propre façon de gérer les choses. Certains packages, comme Smarty, utilisent leur propre chargement automatique, certains développeurs placent plusieurs classes dans un fichier ou portent des noms de fichier en minuscule - tout cela est très aléatoire.

PSR-0 est un standard, créé par le groupe de standards PHP, pour calmer ce gâchis. Le compositeur travaillera avec par défaut. Composer est fourni avec un autochargeur PSR-0, que vous pouvez inclure dans votre projet avec une seule ligne:

include_once './vendor/autoload.php';

Évidemment, si vous avez changé le répertoire des fournisseurs, vous devrez mettre à jour ce répertoire..

Vous pouvez maintenant utiliser le code dans vos applications:

déverser();

Ceci est un exemple d'utilisation d'Assetic. Oui, il y a beaucoup de code d'espace de nom, mais cela est fait pour éviter les conflits entre les packages. La convention de dénomination pour PSR-0 est essentiellement la suivante:

\\ (\) *

Un autre exemple pourrait être le paquet HTTP Buzz, qui ressemble à ceci:

$ browser = new Buzz \ Browser; $ response = $ browser-> get ('http://www.google.com'); echo $ browser-> getLastRequest (). "\ n"; echo $ réponse;

Cela pourrait ressembler à un glorifié file_get_contents (), mais il gère toutes sortes de logiques intelligentes en arrière-plan pour utiliser HTTP Response / Request - et vous pouvez voir que la syntaxe d'espace de nom est un peu moins intense.


Étape 5 - Monde réel

Si vous voulez être vraiment intelligent, vous pouvez automatiser le processus entier.

Actuellement, la plupart des projets stockent toutes les dépendances PHP dans le référentiel de code principal. Ainsi, si vous utilisez le Kit de développement logiciel Facebook, par exemple, il vous suffit d'insérer cette version dans votre code en copiant-collant le code à partir de GitHub ou en extrayant un fichier ZIP. Ensuite, vous l'ajoutez à votre système de gestion de versions et appliquez les modifications..

Cette version se trouve alors avec votre code sous forme de fichier statique, que vous pouvez éventuellement oublier de mettre à niveau. - SI vous remarquez que Facebook a publié une version mise à jour. La nouvelle version du fichier va au-dessus et vous poussez aussi ces nouvelles modifications.

Vous pouvez utilisez Composer pour ne pas avoir à faire attention aux versions, lancez simplement une mise à jour et validez toutes les modifications. Mais pourquoi avoir des charges de code dans votre référentiel que vous n’avez pas besoin d’y avoir?

La meilleure solution est d’ajouter vendeurs/ dans votre liste "Ignorer" (E.g: .gitignore) et gardez votre code hors de là. Lorsque vous déployez du code sur vos hôtes, vous pouvez simplement exécuter compositeur installer ou mise à jour du compositeur.

Si vous voulez être vraiment intelligent, vous pouvez automatiser l’ensemble du processus. Ainsi, si vous avez un hébergement dans le cloud, vous pouvez configurer des points compositeur installer dès que votre nouveau code est poussé!


Résumé

Vous verrez de plus en plus de compositeurs aller de l'avant, à mesure que divers frameworks PHP ont commencé à fournir différents niveaux d'intégration; FuelPHP sera construit sous forme de packages Composer, CodeIgniter prendra en charge le chargement automatique et Symfony2 l’utilise déjà de manière intensive..

Composer est un excellent moyen d’ajouter des dépendances à vos projets sans avoir à installer d’extension PECL ni à copier-coller de nombreux fichiers. Cette façon de faire est extrêmement dépassée et demande trop de temps aux développeurs..