« Programmation PHP/Composer » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 17 : Ligne 17 :


Pour l'installer à partir du téléchargement :
Pour l'installer à partir du téléchargement :
<source lang=bash>
<syntaxhighlight lang=bash>
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
</syntaxhighlight>
</source>


Enfin, pour tester l'installation, lancer :
Enfin, pour tester l'installation, lancer :
<source lang=bash>
<syntaxhighlight lang=bash>
composer -v
composer -v
</syntaxhighlight>
</source>


== Utilisation ==
== Utilisation ==
Ligne 31 : Ligne 31 :
=== ''require'' ===
=== ''require'' ===
Pour installer un paquet, par exemple client client HTTP Guzzle :
Pour installer un paquet, par exemple client client HTTP Guzzle :
<source lang=bash>
<syntaxhighlight lang=bash>
composer guzzlehttp/guzzle
composer guzzlehttp/guzzle
</syntaxhighlight>
</source>


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.
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.
Ligne 39 : Ligne 39 :
==== Paramètres ====
==== Paramètres ====
On peut aussi préciser le numéro de version, par exemple MediaWiki :
On peut aussi préciser le numéro de version, par exemple MediaWiki :
<source lang=bash>
<syntaxhighlight lang=bash>
composer require mediawiki/semantic-media-wiki "1.9.*,>=1.9.0.1"
composer require mediawiki/semantic-media-wiki "1.9.*,>=1.9.0.1"
</syntaxhighlight>
</source>


On peut aussi installer plusieurs paquets à la suite :
On peut aussi installer plusieurs paquets à la suite :
<source lang=bash>
<syntaxhighlight lang=bash>
composer require symfony/framework-bundle symfony/console
composer require symfony/framework-bundle symfony/console
</syntaxhighlight>
</source>


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 <code>composer install</code> en développement, et <code>composer install --no-dev</code> en production :
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 <code>composer install</code> en développement, et <code>composer install --no-dev</code> en production :
<source lang=bash>
<syntaxhighlight lang=bash>
composer require --dev phpunit/phpunit ^8
composer require --dev phpunit/phpunit ^8
</syntaxhighlight>
</source>


=== ''install'' ===
=== ''install'' ===
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 :
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 :
<source lang=bash>
<syntaxhighlight lang=bash>
composer install
composer install
</syntaxhighlight>
</source>


{{attention|clear=left|
{{attention|clear=left|
Si plusieurs versions de PHP sont installées, il faut préciser laquelle exécute ''composer'' ainsi :
Si plusieurs versions de PHP sont installées, il faut préciser laquelle exécute ''composer'' ainsi :
<source lang=bash>
<syntaxhighlight lang=bash>
/usr/bin/php7.2 /usr/local/bin/composer install
/usr/bin/php7.2 /usr/local/bin/composer install
</syntaxhighlight>
</source>
}}
}}


Ligne 69 : Ligne 69 :
{{attention|clear=left|
{{attention|clear=left|
Ne jamais lancer de <code>composer update</code> 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 :
Ne jamais lancer de <code>composer update</code> 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 :
<source lang=bash>
<syntaxhighlight lang=bash>
php composer.phar update mediawiki/semantic-media-wiki --with-dependencies
php composer.phar update mediawiki/semantic-media-wiki --with-dependencies
</syntaxhighlight>
</source>
}}
}}



Version du 16 avril 2020 à 09:17

Composer est un logiciel de gestion des bibliothèques PHP open source. Celles-ci sont aussi accessibles sur https://packagist.org/.

Logo

Il existe une syntaxe pour le nommage des bibliothèques sous peine de warnings lors des manipulations avec composer. Elles doivent être de la forme vendor name/package name, uniquement avec des caractères alphanumériques plus "-", "." ou "_".

Installation

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

Le programme Composer lit et modifie la liste des bibliothèques du projet dans le fichier composer.json.

require

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

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

install

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

Logo

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

Logo

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

show

Affiche toutes les bibliothèques installées sur une ligne chacune, ce qui est plus lisible que composer.lock.

Syntaxe du composer.json

La syntaxe JSON de ce fichier contient quelques extensions[2] :

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

Après la version à trois nombres, on peut suffixer un arobase puis un Stability Flag[3]. Exemples :

  • @dev
  • @stable

Changer de version de PHP

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.

Références