intégrer une librairie externe

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] intégrer une librairie externe

    Hello les amis,

    je suis sous joomla 3 dernière version (en fait pour dire que je ne suis pas en joomla4)

    Je souhaite générer des fichiers gpx. J'ai trouvé : https://sibyx.github.io/phpGPX/

    çà va répondre à mon besoin.


    sauf que... je ne sais pas l'intégrer dans mes dév

    J'ai mis le code dans une libraiairie.

    Normalement je dois simplement faire :


    Code PHP:
    use phpGPX\Models\GpxFile;
    use 
    phpGPX\Models\Link;
    use 
    phpGPX\Models\Metadata;
    use 
    phpGPX\Models\Point;
    use 
    phpGPX\Models\Segment;
    use 
    phpGPX\Models\Track;
    ... 
    sauf qu'il ne connait pas ce namespace.

    j'ai joué avec les
    Code PHP:
    JLoader 
    ,
    Code PHP:
    require_once 
    mais rien n'y fait.


    souvent je vois sur les forums le "autoloader.php" (lié à composer) mais je ne l'ai pas avec Joomla

    Je suis donc à la recherche d'un retour d'expérience ou un exemple


    Merci beaucoup.

    Manu

  • #2
    Bonjour Manu

    Ta question est davantage PHP - Composer que Joomla.

    Premièrement, il te faut installer Composer sur ta machine de développement.

    Ensuite, lorsque c'est fait, lance une session DOS et rends-toi dans le dossier racine de ton site Joomla.

    Depuis la console, exécute cette ligne de commandes:

    Code:
    composer require sibyx/phpgpx:@RC
    Si Composer est correctement installé, tu verras alors cet affichage:

    ./composer.json has been created
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 1 install, 0 updates, 0 removals
    - Installing sibyx/phpgpx (1.0-RC5): Downloading (100%)
    Writing lock file
    Generating autoload files
    Le résultat : dans le dossier racine de ton site Joomla, tu vas avoir un nouveau dossier /vendor (s'il n'existait pas déjà). Et dans ce dossier vendor, ta dépendance phpgpx aura été installée.

    ├───composer
    └───sibyx
    └───phpgpx
    ├───docs
    │ └───_data
    ├───example
    ├───src
    │ └───phpGPX
    │ ├───Helpers
    │ ├───Models
    │ │ └───Extensions
    │ └───Parsers
    │ └───Extensions
    └───tests
    ├───fixtures
    └───UnitTests
    └───phpGPX
    ├───Helpers
    └───Parsers
    Ceci fait, pour utiliser les nouveaux namespace; il te faut charger l'autoloader de Composer; c'est le fichier /vendor/autoload.php.

    Dans ton propre code source, tu dois donc faire un

    Code PHP:
    require_once ('./../../vendor/autoload.php'); 
    (à toi bien sûr d'indiquer le bon chemin relatif)

    Ce require_once sera l'une des toutes premières lignes de ton fichier; elle peut toutefois se trouver après les lignes des use statements.

    Logiquement, cela devrait le faire.

    Note : sur ton site de production; soit tu envoies tout le dossier /vendor par FTP upload et c'est tout bon; soit tu te connectes en ssh, tu te rends dans le dossier racine du site de production et tu lances la commande ci-dessous pour installer les dépendances:

    Code:
    composer install
    Note: à la racine de ton site local, tu auras un fichier composer.lock. Si tu envoies ce fichier lors de ton FTP upload; la commande `composer update` garantis que tu utiliseras strictement la même version de la librairie phpgpx que sur ta machine de développement. Un `composer install` forcera toujours l'installation de la toute dernière version disponible.

    J'espère que mon explication est claire, suffisante et qu'elle te permettra de lever ton blocage.

    Bonne soirée amigo.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Merci l'ami,

      çà fait beaucoup d'actions pour juste intégrer une bibliothèque à un dev joomla :/

      je pensais "juste" faire simple.

      je te tiens au jus.

      prends soin de toi et de ta famille.

      Commentaire


      • #4
        Bonjour Manu

        Cela devient une routine... La première fois oui, il faut installer Composer et puis ... en fait non, un petit coup de composer install et tu es presque déjà ready.

        Cela devient une routine quand tu fais du PHP (pur).

        Bon dev !
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #5
          Bonjour Manu, Christophe,

          En Joomla 4, il y a une ligne à ajouter dans le fichier xml : <namespace>

          Par exemple, dans le module banners, on a la ligne <namespace path="src">Joomla\Module\Banners</namespace>

          On la retrouve aussi dans le composant <namespace path="src">Joomla\Component\Banners</namespace>

          Je n'ai pas essayé en Joomla 3.

          Pascal
          cavo789 aime ceci.
          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            En Joomla 3, je n'ai pas trouvé d'utilisation de <namespace> dans les xml.

            Dans plusieurs extensions (JCE, Akeeba, T4,..), ils utilisent JLoader::registerNamespace

            Par exemple, dans administrator\components\com_jce\includes\base.php : JLoader::registerNamespace('Defuse\\Crypto', WF_ADMINISTRATOR . '/vendor/Defuse/Crypto', false, false, 'psr4');

            Pascal
            If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

            Commentaire


            • #7
              le JLoader::registerNamespace fonctionne pas bien.

              j'ai testé ce matin l'utilisation du composer Joomla (dispo depuis joomla 3.4) : marche pas.

              J'ai pris la technique de christophe et çà marche nickel. Juste pour le autoload, je suis passé en chemin statique :
              require_once (JPATH_SITE . '/libraries/phpGPX/autoload.php');

              çà marche nickel.

              Manu

              Commentaire


              • #8
                Hello Pascal

                Envoyé par pmleconte Voir le message
                Par exemple, dans administrator\components\com_jce\includes\base.php : JLoader::registerNamespace('Defuse\\Crypto', WF_ADMINISTRATOR . '/vendor/Defuse/Crypto', false, false, 'psr4');
                C'est un peu étonnant de devoir spécifier, ici /Defuse/Crypto. En PHP pur, on ne doit pas le savoir : tu fais ton Composer require tel que l'auteur de la librairie l'a indiqué dans sa doc (`composer require sibyx/phpgpx:@RC` pour reprendre le cas de Manu) et ensuite, on ne doit pas se soucier de cela.

                On fait le require du fichier vendor/autoload.php sans se soucier le moins du monde de la complexité des dossiers derrière.

                Envoyé par elecoest
                require_once (JPATH_SITE . '/libraries/phpGPX/autoload.php');
                Est-ce que `require_once (JPATH_SITE . '/vendor/autoload.php');` n'est pas suffisant ?
                Christophe (cavo789)
                Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                Commentaire


                • #9
                  cavo789 à tester plus tard si on a mis son extension dans le repertoire natif joomla. Remarque : aucun composant ne le fait

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X