IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonctionnement basique de composer


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 448
    Points : 5 808
    Points
    5 808
    Billets dans le blog
    1
    Par défaut Fonctionnement basique de composer
    Bonjour,
    après avoir cherché vainement une réponse (entre autre ici : https://getcomposer.org/), je pose ma question.
    J'ai lu que pour que composer puisse fonctionner, il a besoin d'un fichier composer.json. Or j'ai sous la main un projet qui utilise composer, qui possède 2 dépendances (installées avec composer). De ce fait, on a l'arborescence suivante :
    des fichiers et des répertoires
    index.php
    vendor
          rawsrc
                pdoplusplus
                       composer.json
                       PDOPlusPlus.php 
                phpecho
                       composer.json
                       PhpEcho.php
         autoload.php
    
    Donc composer a créé le répertoire vendor, en y mettant les 2 dépendances pdoplusplus et phpecho et un fichier autoload.php.
    La question que je me pose : cet autoloader permet de trouver les 2 classes qui sont PDOPlusPlus.php et PhpEcho.php quand on les instancie, mais visiblement, il permet aussi de trouver les autres classes du projet contenues dans les répertoires mentionnés en première ligne. Comment cela se fait-il vu qu'il n'y a pas de fichier composer.json global ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 345
    Points : 704
    Points
    704
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    j'ai sous la main un projet qui utilise composer
    [...]
    Comment cela se fait-il vu qu'il n'y a pas de fichier composer.json global ?
    Bonjour,

    Si ton projet utilise Composer, tu dois donc avoir un fichier composer.json pour ton projet.

    Dans le fichier composer.json de ton projet, tu peux y définir l'option autoload (par défaut avec PSR-4 comme vu dans une autre discussion) pour activer le chargement automatique des classes de ton projet.
    https://getcomposer.org/doc/01-basic...md#autoloading

  3. #3
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    Les fichiers composer.json que tu montres sont ceux des dépendances; ce n'est pas ton fichier à toi. Dans ton dossier racine, tu as donc index.php et tu dois avoir composer.json. Si tu ne l'as pas, il est impossible que composer fonctionne.

    Par essence, le dossier vendor peut être supprimé et totalement recréé avec un composer install (ou composer update).

    Ce que tu écris est donc impossible et pour preuve, supprime donc le dossier vendor et tente de le recréer... cela ne fonctionnera pas puisque, dans l'exemple que tu donnes, il te manque ton fichier composer.json.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 448
    Points : 5 808
    Points
    5 808
    Billets dans le blog
    1
    Par défaut
    Ca me rappelle cette citation : https://lapausephilo.fr/2019/09/18/i...it-mark-twain/

    Citation Envoyé par cavo789 Voir le message
    supprime donc le dossier vendor et tente de le recréer... cela ne fonctionnera pas puisque, dans l'exemple que tu donnes, il te manque ton fichier composer.json.
    En effet, je l'ai vérifié.

    Par contre
    Citation Envoyé par cavo789 Voir le message
    Par essence, le dossier vendor peut être supprimé et totalement recréé avec un composer install (ou composer update).
    C'est en contradiction avec la phrase ci-dessus et d'ailleurs :
    composer install
    Composer could not find a composer.json file in C:\projets\newsite
    To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage
    pareil avec composer update.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 345
    Points : 704
    Points
    704
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Composer could not find a composer.json file in C:\projets\newsite.
    Où est passé le fichier composer.json de ton projet ?

    Si tu ne retrouves pas le fichier composer.json de ton projet, essaye de le recréer :
    - supprime le dossier vendor de ton projet (et le fichier composer.lock si tu en as un)
    - exécute la commande composer init à la racine de ton projet pour générer le composer.json de ton projet et ajoute les dépendances de ton projet (pendant la commande composer init ou ensuite avec la commande composer require)

  6. #6
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    Pas la moindre contradiction.... En l'absence du fichier composer.json dans ton dossier racine, il est impossible de recréer le dossier vendor.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 448
    Points : 5 808
    Points
    5 808
    Billets dans le blog
    1
    Par défaut
    DSL y a pas contradiction, j'avais mal lu.

    Citation Envoyé par cavo789 Voir le message
    Ce que tu écris est donc impossible
    Là, non. Je crois qu'en fait, précédemment, j'avais un fichier composer.json puis que je l'ai supprimé.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Là, non. Je crois qu'en fait, précédemment, j'avais un fichier composer.json puis que je l'ai supprimé.
    Obligatoirement (tu avais un tel fichier) sinon (ce que tu écris est impossible).

    Sache que si tu utilisais un système de versions tel que git / github, tu ne perdras plus jamais rien puisque tout est versionné.

    Tiens, pour info, si tu programmes avec vscode, tu peux récupérer ton fichier ! La magie de vscode fera que si tu recrées un fichier nommé composer.json vide, il y a sous vscode la notion de timeline (à chercher sur le site de vscode) qui va te montrer l'évolution du fichier et donc te permettre de retrouver un ancien contenu.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 448
    Points : 5 808
    Points
    5 808
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Sache que si tu utilisais un système de versions tel que git / github, tu ne perdras plus jamais rien puisque tout est versionné.
    Il faudra que je m'y intéresse...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 11/10/2019, 08h00
  2. [4.x] Fonctionnement des access_control (composant Security)
    Par Toto9292 dans le forum Débuter
    Réponses: 1
    Dernier message: 23/08/2018, 15h38
  3. Réponses: 2
    Dernier message: 15/09/2007, 18h04
  4. Réponses: 2
    Dernier message: 03/09/2006, 10h03
  5. [C#] Pourquoi mon composant DCOM ne fonctionne t-il pas ?
    Par mimibobo dans le forum Services Web
    Réponses: 1
    Dernier message: 27/07/2006, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo