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.
Contenu
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 !