Composer require PHP... C'est pas un peu bizarre ?

Le problème exposé dans ce sujet a été résolu.

Salut !

D’après https://getcomposer.org/doc/01-basic-usage.md, Composer permet de télécharger et de mettre à dispo des packages PHP. Il est également dit que Composer est lui-même un script PHP qui a d’ailleurs besoin de PHP 5.3.2 minimum pour fonctionner (https://getcomposer.org/doc/00-intro.md#system-requirements).

Oui mais dans mon Laravel 8, je vois dans composer.JSON:

"require": {
    "php": "^8.0",

Alors du coup je ne comprends pas ? ça signifie que Composer va installer dans vendor le package php (l’interpréteur ?), mais du coup, ça ne désigne pas l’interpréteur PHP du serveur, lequel doit être au moins en 5.3.2 ? L’espèce de co-existence entre ces deux interpréteurs (l’un au niveau du serveur, l’autre en tant que package composer dans vendor) n’est-elle pas risquée ? A quoi ça sert d’avoir un interpréteur PHP en tant que package Composer dans vendor ?

Voilà j’avoue que c’est assez perturbant, je ne comprends pas. J’ai tendance à penser que Composer va traiter la dépendance php comme un cas à part, et que ça désigne réellement l’interpréteur PHP au niveau du serveur et qu’il ne placera pas, exceptionnellement, ce package dans vendor.

Merci d’avance d’éclairer ma lanterne !

A bientôt et bonne soirée à vous tous,

Salut,

Cette ligne ne désigne pas la version de PHP nécessaire pour Composer mais pour ton projet lui-même : en gros, ça te permet de dire à Composer quelles versions de PHP sont nécessaire pour exécuter ton projet correctement. Si la version actuellement installée sur ton environnement ne répond pas à ce prérequis, Composer s’arrêtera immédiatement et lèvera une erreur. En pratique, Composer ne télécharge pas PHP du tout.

Tu peux d’ailleurs modifier cette ligne librement si tu souhaites utiliser une version plus récente encore pour utiliser des fonctionnalités récentes du langage (si tant est que les autres dépendances soient elles-mêmes compatibles).

C’est également courant d’indiquer dans le composer.json les extensions de PHP qui seront nécessaires pour exécuter le projet, elles sont préfixées avec ext-. Si une extension n’est pas installée ou activée, Composer s’arrêtera de la même manière.

+3 -0

Je ne comprends pas pourquoi on doit mettre ça dans le require. Le require c’est censé être utilisé entre autres pour remplir le répertoire vendor. Logiquement php devrait être téléchargé et placé dedans :o

Donc PHP est traité à part par composer ?

Au niveau du sens, logiquement, j’aurais pensé à une section spéciale.

Autrement dit, ça aurait plus de sens d’avoir une section "plateforme requirement". Mais ce n’est que mon avis.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte