Comment installer Composer le gestionnaire de package de PHP

Aujourd’hui tout lange de programmation moderne se doit d’avoir un gestionnaire de package, pour NodeJS on a NPM, pour C# on a Nugget, etc.

Installation de Composer sous Windows

Pour avoir les étapes d’installation, se référer à cet article relatif à l’installation de Composer.

Il suffit d’installer l’exécutable composer-setup.exe

Installation de composer sous Linux/MacOS

Il est préférable d’installer en ligne,

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
#vérification 
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
#exécution du fichier php qui va installer composer
php composer-setup.php
#effacement du fichier php qui nous a servi à installer composer
php -r "unlink('composer-setup.php');"

Le fichier composer.json

Ce fichier consigne tous les paquets qui sont installés, lisez les section require ou require-dev, ils listent les paquets qui seront installés dans le dossier vendor.

Composer a aussi un rôle de chargement des classes des librairies qui sont dans le dossier vendor, en effet il n’est pas simple d’accéder à des classes qui sont enfouis profondément dans ce répertoire.

L’autoloading dans composer

Dans notre répertoire de travail nous voulons pouvoir accéder aux classes depuis notre répertoire de travail

/app
   /controller
   /services
/vendor
  /librairie1
    /Query.php

Par exemple dans le répertoire controller de notre projet, nous voulons accéder à la classe Query.php, nous voyons le chemin pour y arriver, donc dans notre fichier controller :

use \librairies\Query
class UserController {
  $query = new Query()
}

Remarquez la correspondance entre le chemin et le use, il y a correspondance entre le chemin pour aller jusqu’à la classe et la syntaxe du use.

Erreurs qu’on peut rencontrer avec composer

Pas assez de mémoire pour exécuter composer

On utilise composer en ligne de commande, PHP dispose d’une variable d’environnement qui fixe le seuil maximal de mémoire autorisé pour exécuter des script php, et composer en réalité est un script php qui s’exécute ! Nous pouvons faire appel à la variable memory_limit de cette façon

>php -d memory_limit=512M /usr/local/bin/composer update
#note : PHP en ligne de commande est différent de PHP pour le serveur web !
#ou encore mieux exécuter sans limite de mémoire
php -d memory_limit=-1 /usr/local/bin/composer update

Note pour le framework Symfony :

S’il existe un fichier parameters.yaml.dist, composer va tenter de générer un parameters.yaml depuis ce dernier fichier, écrasant le parameters.yaml original, donc faites attention lorsque vous importez un projet existant !

Retour en haut