Programmation PHP/Composer
Composer est un logiciel de gestion des bibliothèques PHP open source. Celles-ci sont aussi accessibles sur https://packagist.org/.
Installation[modifier | modifier le wikicode]
Pour l'installer il y a trois solutions :
- Avec les commandes PHP décrites sur https://getcomposer.org/download/.
- En téléchargeant le package par navigateur à la même adresse.
- En le téléchargeant avec la commande cURL[1], comme le montre la vidéo suivante :
A la fin il faut juste disposer du fichier composer.phar.
Pour le lancer, on peut utiliser la commande composer
s'il est installé avec PHP, ou php composer.phar
s'il est juste téléchargé.
Pour l'installer à partir du téléchargement :
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Enfin, pour tester l'installation, lancer :
composer -v
Utilisation[modifier | modifier le wikicode]
Le programme Composer lit et modifie la liste des bibliothèques du projet dans le fichier composer.json.
require[modifier | modifier le wikicode]
Pour installer un paquet, par exemple client client HTTP Guzzle :
composer guzzlehttp/guzzle
Si l'installation réussit, il ajoute le nom et la version du paquet dans composer.json, ceux de ses dépendances dans composer.lock, et télécharge leurs fichiers dans un dossier "vendors". Il informe ensuite des problèmes de dépendances, par exemple si la version de PHP locale est inférieure à celle recommandée pour le paquet. En cas d'erreur il retire tout ce qu'il a fait.
Paramètres[modifier | modifier le wikicode]
On peut aussi préciser le numéro de version, par exemple MediaWiki :
composer require mediawiki/semantic-media-wiki "1.9.*,>=1.9.0.1"
On peut aussi installer plusieurs paquets à la suite :
composer require symfony/framework-bundle symfony/console
Pour éviter de télécharger une bibliothèque destinée au développement en environnement de production, l'ajouter en mode "dev", puis lancer composer install
en développement, et composer install --no-dev
en production :
composer require --dev phpunit/phpunit ^8
Pour utiliser un commit particulier du dépôt de la dépendence, utiliser le mot réservé "dev-master". Ex :
composer require mediawiki/semantic-media-wiki dev-master#hash_du_commit
install[modifier | modifier le wikicode]
Généralement quand on clone un projet git existant contenant un composer.json, il suffit ensuite pour le faire fonctionner, d'installer ses dépendances ainsi :
composer install

Si plusieurs versions de PHP sont installées, il faut préciser laquelle exécute composer ainsi :
/usr/bin/php7.2 /usr/local/bin/composer install
update[modifier | modifier le wikicode]

Ne jamais lancer de composer update
sur un projet existant, sous peine de devoir tout retester. En effet, mieux vaut ne mettre à jour qu'une seule bibliothèque en précisant son nom :
php composer.phar update mediawiki/semantic-media-wiki --with-dependencies
Il faut parfois éditer le composer.json avec la règle de la nouvelle version souhaitée avant de lancer l'update.
show[modifier | modifier le wikicode]
Affiche toutes les bibliothèques installées sur une ligne chacune, ce qui est plus lisible que composer.lock.
Syntaxe du composer.json[modifier | modifier le wikicode]
La syntaxe JSON de ce fichier contient quelques extensions[2] :
name[modifier | modifier le wikicode]
Le nom de l'application, telle qu'elle sera appelée par composer.

require[modifier | modifier le wikicode]
Le paragraphe "require" contient les noms des dépendances ainsi que leurs numéros de version (SemVer).
Symbole | Rôle (placé avant un numéro de version) | Exemple |
---|---|---|
>= | permet d'en étendre le numéro. De même on trouve les symboles >, <, <=. | "php": ">=5.5.9" inclut PHP 7.
|
!= | exclut une version. | |
- | définit une plage de versions. | |
¦¦ | ajoute des versions possibles. | "symfony/symfony": "2.8 ¦¦ 3.0" regroupe uniquement ces deux versions.
|
* | étend à toutes les sous-versions. | "symfony/symfony": "3.1.*" comprend la 3.1.1.
|
~ | étend aux versions suivantes du même niveau. | "doctrine/orm": "~2.5" concerne aussi la 2.6 mais pas la 2.4 ni la 3.0.
|
^ | fait la même chose que tilde sous réserve qu'il y ait une compatibilité ascendante. |
Stability Flag[modifier | modifier le wikicode]
Après la version à trois nombres, on peut suffixer un arobase puis un Stability Flag[3]. Exemples :
@dev
@stable
require-dev[modifier | modifier le wikicode]
On y trouve ce qui a été installé avec require --dev
, donc généralement des bibliothèques de tests et d'analyse de code.
config[modifier | modifier le wikicode]
Ensemble de paramètres de composer[4], par exemple le timeout ou les identifiants vers certains dépôts.
autoload[modifier | modifier le wikicode]
Mapping des namespaces pour les PHP autoloader.
scripts[modifier | modifier le wikicode]
Scripts qui s’exécutent quand on lance "composer"[5].
- Soit automatiquement si présents dans "auto-scripts".
- Soit manuellement. Ex :
...
"scripts": {
"doctrine-cc": "php bin/console doctrine:cache:clear-metadata && php bin/console doctrine:cache:clear-query && php bin/console doctrine:cache:clear-result"
},
...
Utilisation :
composer doctrine-cc
extra[modifier | modifier le wikicode]
Complément de "scripts".
conflict[modifier | modifier le wikicode]
Liste automatiquement les dépendances en conflit, c'est-à-dire qui ne peuvent pas être installées avec l'application courante dans une tierce.
Changer de version de PHP[modifier | modifier le wikicode]
Composer ne permet pas de changer de version de PHP en ligne de commande. Pour ce faire, il faut éditer le composer.json en mettant la version cible souhaitée, puis lancer composer update
.