PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 15/06/2017 16:13:46

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 830
Site Web

Déboguer du PHP avec Javascript

Cela ne concerne pas directement PluXml mais cela peut vous aider à développer un plugin ou à modifier n'importe quel code PHP.

Quand un script PHP ne rend pas le service attendu contre toute attente, le besoin de tracer quelque variable devient vite pressant.

PluXml propose une fonction plxUtils::debug() qui permet d'afficher à l'écran une variable ou un tableau. L'ennui, c'est que cela modifie l'affichage.
Une autre technique est d'envoyer des commentaires dans la page HTML. Supposons qu'on a deux variables PHP $a='Cool' et $t=array('bonjour', 'bonsoir').
On peut tracer la valeur de ces variables dans un commentaire de la page HTML comme ceci:

[== PHP ==]
echo "<!--\n";
echo '$a = '.$a."\n";
echo '$t = ';
print_r($t);
echo "-->\n";

Si la page HTML n'est pas trop compliquée, c'est assez rapide à retrouver en tapant Ctrl-u dans le navigateur. Mais si la page est bien touffue avec un code pas "pretty print", c'est vite prise de tête.

Une autre façon est d'afficher le contenu de la variable dans la console Javascript les outils de développement de votre navigateur, accessible sous Firefox avec la touche F12.
On va pour cela ajouter à la fonction plxUtils::debug, une fonction plxUtils:debugJS(..):

[== PHP ==]
    /**
     * Envoie un message vers la console javascript pour aider au déboggage.
     * @author J.P. Pourrez alias bazooka07
     * @version 2017-06-09
     * */
    public static function debugJS($obj, $msg='') {

        if(!empty($msg)) $msg .= ' = ';
        $msg .= (is_array($obj)) ? print_r($obj, true) : ((is_string($obj)) ? "\"$obj\"" : $obj);
        echo <<< EOT
    <script type="text/javascript">
        console.log(`$msg`);
    </script>

EOT;

    }

Vous pouvez maintenant ajouter à la fin du fichier header.php de votre theme favori :

[== PHP ==]
<?php plxUtils::debugJS($plxShow->plxMotor->aConf, 'Config de Pluxml ='); ?>

et voir afficher la configuration de votre instance PluXml si vous avez auparavant ouvert la console Javascript ci-dessus.

Hors ligne

#2 21/06/2017 02:20:05

Jerry Wham
Membre
Inscription : 13/07/2011
Messages : 2 553
Site Web

Re : Déboguer du PHP avec Javascript

Merci pour l'astuce. Fallait y penser. wink


Mangez un castor, vous sauverez un arbre !

J'ai la tête dans le  ...code

Hors ligne

#3 21/06/2017 18:40:23

Jerry Wham
Membre
Inscription : 13/07/2011
Messages : 2 553
Site Web

Re : Déboguer du PHP avec Javascript

La méthode ne fonctionne pas si on lui passe un objet.
Pour qu'elle fonctionne, voici les modifications à faire :

/**
     * Envoie un message vers la console javascript pour aider au déboggage.
     * @author J.P. Pourrez alias bazooka07
     * @version 2017-06-09
     * */
    public static function debugJS($obj, $msg='') {

        if(!empty($msg)) $msg .= ' = ';
        $msg .= (is_array($obj) ? json_encode($obj, JSON_PRETTY_PRINT) : ((is_string($obj)) ? "\"$obj\"" : json_encode($obj,JSON_PRETTY_PRINT)));
        echo '
	    <script type="text/javascript">
	        console.log(`'.$msg.'`);
	    </script>
	    ';

    }

Mangez un castor, vous sauverez un arbre !

J'ai la tête dans le  ...code

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2017 PluXml.org, tous droits réservés