Comment utiliser une fonction définie dans une classe du backend ?

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

  • [RÉGLÉ] Comment utiliser une fonction définie dans une classe du backend ?

    Salut tout le monde.

    Je suis en train d'écrire un petit bout de code en PHP, que j'appellerais ensuite par exemple dans un article (ou ailleurs) :
    require_once('includes/maFonction.php');

    Plutôt que de ré-inventer la roue, j'aimerais réutiliser une fonction définie dans une classe d'un composant (côté admin) :
    /monsite/administrator/components/com_xxx/classes

    Si j'ai bien compris, la classe JLoader devrait m'aider à atteindre cet objectif, mais je n'arrive pas à trouver comment l'utiliser...

    La classe qui m'intéresse se trouve dans le fichier
    /monsite/administrator/components/com_xxx/classes/order.php


    J'ai donc commencé par
    JLoader::register('myOrder', JPATH_ADMINISTRATOR . '/components/com_xxx/classes/order.php');

    A priori, pas de souci.

    Ensuite, si j'ai bien compris, je peux accéder à ma classe en utilisant
    $obj = new myOrder();

    puis :
    $truc = $obj::copyOrder();

    (où copyOrder est une fonction de ma classe définie dans le fichier /monsite/administrator/components/com_xxx/classes/order.php)

    Mais ça ne fonctionne pas...
    J'en déduis donc que je m'y prends mal... Qu'est-ce que je fais mal ?
    Je n'ai pas trouvé de tuto pour utiliser la classe JLoader... Où est-ce que je peux trouver de l'aide ?

    Merci d'avance !

  • #2
    Re : Comment utiliser une fonction définie dans une classe du backend ?

    Bonjour,

    Un simple
    Code PHP:
    require_once JPATH_ADMINISTRATOR '/components/com_xyz/classes/order.php 
    De plus, soit la méthode de classe (et non fonction) est statique et l'appel est simplement
    Code PHP:
    $result myOrder::copyOrder(); 
    soit ce n'est pas une méthode statique et l'appel en est
    Code PHP:
    $obj newmyOrder();
    $result $obj->copyOrder(); 
    Mais dans tous les cas de figure, appeler des classes administrator sans discernement pour les inclure via Sourcerer ou DirectPHP dans un article, c'est ouvrir la boîte de Pandorre et risquer de créer des failles de sécurité majeures.
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Comment utiliser une fonction définie dans une classe du backend ?

      Merci pour ta réponse !

      Bon, ben si je risque de créer des failles de sécurité, je ne vais peut-être pas continuer dans cette voie là...
      Du coup, est-ce que tu sais s'il y a une solution (sécurisée) qui me permettrait de "dupliquer" la méthode de classe qui m'intéresse ?

      Commentaire


      • #4
        Re : Comment utiliser une fonction définie dans une classe du backend ?

        Tu as de fortes chances que la méthode fasse appel à d'autres méthodes de la classe, voire à d'autres classes...

        Sans analyser le code et savoir vraiment ce que tu veux faire, je ne vois que le copier-coller...
        Ou pour avoir une sécurité, créer un plugin de contenu, qui te permettrait un accès plus secure au code.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Comment utiliser une fonction définie dans une classe du backend ?

          Ouais, je te confirme, la méthode en appelle d'autres

          Je pense que je vais créer un plugin. Ce sera une première pour moi, mais je pense que je trouverai des tutos.

          Merci pour tes conseils !

          Commentaire


          • #6
            Re : Comment utiliser une fonction définie dans une classe du backend ?

            Si c'est réglé merci de l'indiquer :
            Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
            Confucius

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X