antislash devant defined() ou autre

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

  • [Astuce] antislash devant defined() ou autre

    Bonjour à tous,

    J'aurai une question plutôt simple et concernant les scripts dans joomla.
    J'ai constaté un antislash ( \ ) devant par exemple: \defined ( ... ). etc ....

    Quelqu'un peut m'expliquer quel est sont role ?
    Merci c'est pour ma compréhension perso ! lol


    WampServer 3.2.5 / 64b - - Apache 2.4.46 / 2.4.48 - PHP 7.4.13 -/ 8.0.7 - MariaDB 10.5.8 / 10.5.10
    Joomla => 3.xxx / 4xxx
    --------
    Un pessimiste, c'est un homme qui a travaillé pendant trois mois avec un optimiste !

  • #2
    Bonjour

    Tu peux le trouver devant chaque fonction "native" php comme p.ex. \mkdir.

    C'est supposé accélérer un poil de licorne le temps d'exécution (fonction 'native et non à essayer de retrouver dans une dépendance ou helper tierc) et permettre aussi de garantir que c'est la fonction native qui est appelée (et pas une fonction qui aurait exactement le même nom dans une librairie tierce).

    Sous Linux (si tu joues avec) c'est strictement la même chose. Je peux faire \ls pour afficher le contenu de mon dossier ou ls pour afficher le contenu de mon dossier. Quelle est la différence ?

    Je pourrais avoir créé un alias ls pour par exemple toujours forcer "ls -alh" (ce que je fais).

    Donc ls fait appel à mon alias et \ls fait appel à la commande native.

    Siouplait ;-)
    Dernière édition par cavo789 à 15/03/2024, 16h38
    Fred2FR3 aime ceci.
    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
      Hello.

      Pour compléter la réponse déjà très complète de Christophe, ces \ sont apparus depuis l'affectation des namespaces.

      Un simple \ devant un appel de fonction signifie que le code appelle une fonction qui n'est pas dans le domaine de nommage courant, et qui n'est pas elle même dans un namespace (on considère donc qu'elle est définie à la racine des espaces de nommages d'où le simple \).

      Cela peut-être une fonction php, mais aussi du framework de Joomla comme par exemple Jloader qui est n'est pas dans un namespace, et qui devrait donc aussi être précédée d'un antislash

      Sinon tu as le chemin complet devant l'appel de les fonctions définie en dehors du namespace courant, sauf si il y a une définition de type "use" en début de code.
      Un "use" permet d'utiliser un nom simple comme nom de classe évitant ainsi de reprendre à chaque appel d'une fonction le chemin du namespace nécessaire pour trouver la définition de la fonction appelée.

      Sans chemin du tout devant la fonction sera cherchée dans l'espace de nommage du code en cours d’exécution puis éventuellement dans les fonction php.
      A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
      Rejoignez le Joomla Users Groupe Alsace...
      roland_d_alsace va-t-il devenir roland_du_grand_est ?

      Commentaire


      • #4
        Hello vous deux,

        Merci d'avoir un peu éclairé ma lanterne. J'avoue que j'ai pas tout saisi, mais cela me permet de me rediriger vers => Namespace et class​ de php pour ne pas sauter les étapes.

        Merci encore à vous deux et à bientôt,
        JLuc
        WampServer 3.2.5 / 64b - - Apache 2.4.46 / 2.4.48 - PHP 7.4.13 -/ 8.0.7 - MariaDB 10.5.8 / 10.5.10
        Joomla => 3.xxx / 4xxx
        --------
        Un pessimiste, c'est un homme qui a travaillé pendant trois mois avec un optimiste !

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X