Déboguer un programme PHP sans débogueur

C'est connu : les développeurs PHP travaillent généralement à l'aide de logiciels libres. Dans ce monde, il existe peu ou pas de débogueurs PHP. Il y a bien CodeLobster qui en offre un mais il est difficile à configurer. Avec mes étudiants, il y a généralement une majorité qui préfèrent s'en passer plutôt que de se pencher sur la configuration.

J'ai donc entrepris de leur enseigner à déboguer leur programme sans utiliser un débogueur. Voici la stratégie à utiliser.

▼Publicité

  • Votre programme php devrait comprendre un fichier de configuration utilisé par chacune des pages du site. Dans ce fichier, vous vous chargez entre autres de démarrer la session (session_start()) et d'effectuer le branchement à la base de données. C'est dans ce fichier que vous devez maintenant créer une variable $debug. Cette variable prendra la valeur true si vous souhaitez afficher les messages de débogage et false dans le cas contraire. L'utilisation d'une telle variable permettra d'effectuer le changement à un seul endroit pour vous assurer qu'aucun message de débogage ne soit affiché lors de la mise en production du site Web.
  • Dans le dossier include de votre projet, créez un fichier nommé debug.php. Ce fichier contiendra toutes les fonctions de débogage.
  • Dans ce fichier, créez une fonction nommée echo_debug().
    • La fonction recevra en paramètre le message à afficher.
    • Comme chaque fonction codée dans debug.php, la fonction devra débuter par la ligne suivante afin de pouvoir utiliser la variable déclarée dans votre fichier de configuration :
      PHP

      global $debug;

    • L'affichage n'aura lieu que si la variable $debug est déclarée et si sa valeur est à true.
    • Le message sera affiché dans un <div class="debug">.
    • L'affichage du message reçu en paramètre (qui pourrait être une variable) sera fait à l'aide de print_r() s'il s'agit d'un tableau (is_array()) ou d'un objet (is_object()). Sinon, un simple echo fera l'affaire.
    PHP

    // ***********************************************************

    // fonction echo_debug

    // description : affiche une information de débogage seulement lorsque $debug est à true

    // paramètres : information à afficher. Affichera "débogage" si ne reçoit aucun paramètre

    // retour : aucun

    // utilisation : $debug = true;

    //               ...

    //               echo_debug($requete);

    // suppositions critiques : la variable $debug devrait être définie dans un fichier .inc global à tout le site Web

    //                          pour un meilleur affichage, définir la classe debug dans la feuille de style

    //                          ne pas oublier de mettre $debug à false avant la mise en ligne pour éviter les affichages non désirés et les trous de sécurité

    // ***********************************************************

    function echo_debug($message = 'débogage') {

        global $debug;

     

        if( isset( $debug ) && $debug === true ) {

            echo '<div class="debug">';

            if ( is_array( $message ) || is_object( $message )) {

                print_r( $message );

            }

            else {

                echo $message;

            }

            echo '</div>';

        }

    }

    Télécharger le code de la fonction echo_debug().

  • Dans votre feuille de style, définissez l'apparence de la classe debug, selon votre inspiration. Suggestion : afficher dans un rectangle aux coins arrondis, avec une couleur de fond pâle, légèrement différente ou carrément contrastante de celle de votre contenu principal.

    Ex :

    CSS

    .debug {

        display: block;

        margin: 15px 0;

        padding: 5px 10px;

        background-color: #E7DE84;   /* jaune beige */

        color: black;

        font-size: 1.1em;

        border-style: solid;

        border-width: 1px;

        border-color: #DED359;   /* jaune beige un peu plus foncé */

        border-radius: 5px;

    }

    Voici l'apparence du message affiché en débogage avec ces règles CSS.

Pour plus d'information

« Comment debugger un projet PHP? ». Enseignement polytechnique. http://www.enseignement.polytechnique.fr/informatique/INF441/INF441a/Session1/Memos/Debuggage/Debug.html

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories