Formation PUB010 : PHP, 2022 Déboguer un programme PHP

14.12 Fonction de débogage : echo_debug()


Utilisation d'un débogueur : solution idéale

La meilleure technique pour déboguer un programme PHP consiste à utiliser un débogueur.

Cependant, si vous n'avez pas accès à un IDE avec débogueur (PhpStorm - gratuit pour étudiants d'un établissement enregistré - et CodeLobster - gratuit pour tous - sont de bons exemples d'IDE offrant un débogueur) ou si un problème technique vous empêche d'utiliser le débogueur, la technique expliquée ici est une bonne solution de rechange.

Utilisation de echo : mauvaise approche

Historiquement, les programmeurs PHP utilisaient des echo pour afficher de l'information de débogage.

Cependant, lors de la mise en ligne du programme, il pourrait arriver que des echo de débogage soient encore présents dans le code.

Ceci pourrait générer de l'affichage indésirable ou, pire encore, ouvrir un trou se sécurité.

Utilisation d'une fonction de débogage : meilleure approche

C'est pourquoi il est préférable d'utiliser une fonction qui génère un echo seulement lorsqu'on est en mode développement.

Voici comment créer une telle fonction.

  • Dans votre fichier de configuration créez une constante DEVEL.
  • Prenez soin d'inclure ce fichier dans chacune des pages de votre projet.
  • Dans le dossier include de votre projet, créez un fichier nommé ma-bibliotheque.php si ce n'est pas déjà fait.
  • Dans ce fichier, déclarez une fonction nommée echo_debug() ou echoDebug() selon les normes de programmation de votre établissement.
    • La fonction recevra en paramètre le message à afficher.
    • L'affichage n'aura lieu que si la constante DEVEL est définie et que sa valeur est à true.

    • Le message sera affiché dans un <div class="debug">.
    • L'affichage du message sera fait à l'aide de print_r() s'il s'agit d'un tableau (utilisez is_array() pour le savoir) ou un objet (is_object()). Sinon, un simple echo fera l'affaire.
    • Voici le code complet de la fonction :
      Fichier include/ma-bibliotheque.php

      /**
       * Affiche une information de débogage seulement lorsque DEVEL est à true.
       * @author Christiane Lagacé <christiane.lagace@hotmail.com>
       *
       * Utilisation : echo_debug($mysqli->error);
       * Suppositions critiques : pour un meilleur affichage, définir la classe debug dans la feuille de style.
       * @param String $message Information à afficher. Affichera "débogage" si ne reçoit aucun paramètre.
       */
      function echo_debug($message = 'débogage') {

          if (defined('DEVEL') && DEVEL === true) {
              echo '<div class="debug">';

              if (is_array($message) || is_object($message)) {
                  print_r($message);
              }
              else {
                  echo $message;
              }

              echo '</div>';
          }
      }

  • 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 qui constraste avec celle de votre contenu principal.

    Voici un exemple pour l'apparence du message affiché en débogage.

    Si cette apparence vous plaît, vous pouvez la reproduire à l'aide de ces règles CSS :
    CSS

    .debug {
      display: block;
      background-color: #FCA12D;
      color: black;
      font-size: 1.1em;
      padding-top: 5px;
      padding-left: 10px;
      padding-right: 10px;
      padding-bottom: 5px;
      border: 1px solid #F18A04;
      border-radius: 5px;
      margin: 15px 0;
    }

  • Dans le fichier qui doit utiliser votre fonction de débogage, après avoir inclus votre bibliothèque de fonctions et votre fichier de configuration, vous pourrez utiliser la fonction à l'endroit désiré.
    Fichier index.php

    require 'include/configuration.inc';
    require_once 'include/ma-bibliotheque.php';
    ...
    echo_debug("Valeur : $maVariable");

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre