Circum Blog

Circum Net – IT – Conseils pratiques

Déboguer un script PHP

PHP, Programmation

Commenter et faire parler vos scripts

On ne saurait trop insister sur le fait qu’inclure des commentaires dans un programme ne peut être que bénéfique. On l’appréciera d’ailleurs assez rapidement: une bonne documentation facilite grandement le développement, la correction, la mise à jour et le partage des scripts. 

Mais si les commentaires sont fort utilisés pour annoter un programme php, ils sont également particulièrement sollicités lorsque l’on doit déboguer un script. Les commentaires permettent en effet de mettre entre parenthèses (en d’autres termes de désactiver) une partie du code afin d’identifier plus facilement où se situe le problème. 

Ajoutons à cela que pour suivre encore de plus près ce que fait un script et pour comprendre ou identifier clairement les sources d’erreurs éventuelles, il est utile de parsemer son code d’output de test ou de vérification à l’aide -par exemple- de la fonction ‘print_r’. 

print_r($variable_du_script); 

Cette fonction affiche la valeur des variables et s’il s’agit d’un tableau le détail de ses clés/valeurs. On obtient ainsi de façon contextuelle la composition des variables utilisées dans le script. Il est alors aisé de vérifier si ces variables ont bien été affectées et si la logique du script est respectée et valide.

Mettre au point un fonction de déboguage

Si l’insertion d’instructions d’output dans le code peut faciliter le déboguage, elle peut également, si l’on y prend pas garde, déboucher sur une pollution du code. En effet, ces instructions ne font pas partie de l’affichage “normal” du script et elles doivent être effacées ou mises en commentaires avant de passer à la phase de production.

Le recours à une fonction adéquate peut éviter ces difficultés.

Définition d’une fonction de déboguage      

<?php
$debugmode = true;
function debug($var)
    {
    global $debugmode;
    if ($debugmode) print_r($var);
    }



debug($unevariable);



debug($uneautrevariable);
?>

 
La fonction ‘debug’ prend une variable en paramètre. Elle teste si la variable ‘$debugmode’ est à ‘true’. Si c’est le cas elle lance l’instruction d’affichage ‘print_r’ pour la variable reçue en paramètre. Si on ne désire plus voir apparaître les affichages de déboguage il suffit de fixer ‘$debugmode’ à ‘false’.

Adaptation de la fonction pour un affichage HTML     

<php
$debugmode = true;
function html_print_r($var)
    {
    echo “<pre>”;
    echo str_replace(“n”, “<br/>”, print_r($var)).
    echo “</pre>”;
    }
 
function debug($var)
    {
    global $debugmode;
    if ($debugmode) html_print_r($var);
    }



debug($unevariable);



debug($uneautrevariable);
?>

Pour que les informations fournies par ‘print_r’ soient directement visibles dans le navigateur Web, il faut légèrement adapter notre fonction de façon à ce que les retours de ligne soient traduits en code html “<br/>”. Ceci peut être très facilement réalisé en faisant intervenir l’instruction de remplacement de chaînes “str_replace”.