Examen de l’état de votre code PHP


Lorsque vous déboguez du code PHP, il peut être utile d’examiner l’état de votre code à un moment précis. Cela peut vous aider à comprendre ce qui se passe dans votre code et à identifier les problèmes susceptibles d’en être la cause.

Examinons quelques méthodes permettant d’examiner l’état de votre code PHP à l’aide des fonctions PHP intégrées.

Utiliser error_log() pour consigner des messages

Comme indiqué dans la leçon consacrée aux options de débogage intégrées de WordPress, vous pouvez utiliser la fonction error_log() pour consigner des messages dans le fichier debug.log de WordPress.

Cela peut être utile à des fins de débogage, car cela vous permet de voir ce qui se passe dans votre code sans l’afficher à l’écran.

La fonction error_log() n’est pas propre à WordPress : c’est une fonction PHP que vous pouvez utiliser dans n’importe quel code PHP pour consigner des messages dans le fichier journal des erreurs PHP configuré sur le serveur.

Cependant, une fois les options de débogage spécifiques à WordPress activées dans votre fichier wp-config.php, tout ce qui est transmis à error_log() sera consigné dans le fichier debug.log de WordPress.

error_log( $some_variable );

Cela consignera la valeur de $some_variable dans le fichier debug.log, afin que vous puissiez voir ce qu’elle contient à ce moment précis dans votre code.

L’avantage d’utiliser error_log() est que cela vous permet de consigner des messages dans un fichier sans les afficher à l’écran. Si vous les affichez à l’écran, en particulier dans un environnement de production, vous risquez d’exposer des informations sensibles aux utilisateurs.

Il est également parfois plus rapide de pouvoir consulter la sortie dans un fichier journal plutôt que de devoir la rechercher dans une longue liste de résultats affichés à l’écran.

Utiliser print_r()

Une autre fonction utile pour examiner l’état de votre code PHP est print_r(). Cette fonction affiche la valeur d’une variable, d’un tableau ou d’un objet dans un format lisible par l’être humain, afin que vous puissiez voir ce qu’il contient.

Examinez cet exemple de code PHP.

$some_array = array( 'apple', 'banana', 'cherry' );
print_r( $some_array );

Ce code affichera le résultat suivant à l’écran :

Array ( [0] => apple [1] => banana [2] => cherry )

Les développeurs placent souvent print_r() entre des balises <pre> pour rendre la sortie plus facile à lire.

echo '<pre>';
print_r( $some_array );
echo '</pre>';

Cela affichera le résultat suivant à l’écran :

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
)

Notez que par défaut, print_r() affiche la valeur de la variable, mais ne la renvoie pas. Si vous souhaitez utiliser la sortie de print_r() avec error_log(), vous devez définir le deuxième paramètre sur true.

error_log( print_r( $some_array, true ) );

Cela consignera la sortie de l’appel à print_r dans le fichier debug.log, afin que vous puissiez voir ce que contient $some_array à ce moment précis dans votre code.

Utiliser var_dump()

La fonction var_dump() est une autre fonction utile pour examiner l’état de votre code PHP. Cette fonction affiche la valeur d’une variable, d’un tableau ou d’un objet dans un format lisible par l’être humain, ainsi que des informations supplémentaires sur le type et la longueur de la variable.

Examinez cet exemple de code PHP.

$some_array = array( 'apple', 'banana', 'cherry' );
echo '<pre>';
var_dump( $some_array );
echo '</pre>';

Ce code affichera le résultat suivant à l’écran :

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(6) "cherry"
}

Notez que var_dump() affiche la valeur de la variable, ainsi que des informations supplémentaires sur son type et sa longueur. Cela peut être utile à des fins de débogage, car cette fonction fournit des informations plus détaillées sur la variable que print_r().

Contrairement à print_r(), var_dump() ne permet pas de renvoyer la sortie dans une variable. Vous ne pouvez donc pas l’utiliser directement avec error_log().

Cependant, vous pouvez utiliser ce que l’on appelle la mise en mémoire tampon de sortie pour capturer la sortie de var_dump(), puis la consigner dans le fichier debug.log.

$some_array = array( 'apple', 'banana', 'cherry' );
ob_start();
var_dump( $some_array );
$output = ob_get_clean();
error_log( $output );

Les développeurs utilisent souvent ce type de code dans une fonction de journalisation spéciale, afin de pouvoir utiliser var_dump et error_log ensemble.

function log_var_dump( $variable ) {
    ob_start();
    var_dump( $variable );
    $output = ob_get_clean();
    error_log( $output );
}

Pour aller plus loin

Pour plus d’informations sur les fonctions mentionnées dans cette leçon, consultez les pages suivantes de la documentation PHP :

Fonction PHP var_dump()

Fonction PHP error_log()

Fonction PHP print_r()