var_dump()
La fonction var_dump() affiche des informations structurées sur une variable ou expression PHP, incluant son type et sa valeur.
Introduction
var_dump() est une fonction de débogage intégrée à PHP qui affiche des informations structurées sur une ou plusieurs variables — notamment le type, la longueur et le contenu de chaque valeur — directement dans la sortie. Contrairement à echo, qui ne fait qu'afficher une valeur, var_dump() vous montre exactement quel type de valeur vous avez sous les yeux, ce qui en fait le moyen le plus rapide de répondre à la question « pourquoi est-ce que ça ne fonctionne pas ? » pendant le développement.
Cette page couvre la syntaxe, la façon dont chaque type PHP est rendu, l'utilisation avec des tableaux et des objets, les différences avec des fonctions similaires comme print_r() et var_export(), ainsi que les pièges à éviter.
Syntaxe
var_dump(mixed $value, mixed ...$values): void$value— la variable ou l'expression à inspecter....$values— un nombre quelconque de valeurs supplémentaires ; chacune est affichée dans l'ordre.- Valeur de retour : aucune (
void).var_dump()écrit directement dans la sortie et ne renvoie rien à assigner.
Exemple de base
Ici, $var1 est un entier, $var2 une chaîne et $array un tableau. La sortie indique le type et la valeur de chacun :
int(10)
string(13) "Hello, world!"
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "cherry"
}Lisez attentivement la sortie — elle contient plus de détails que ce que echo fournirait :
int(10)— la valeur est l'entier10.string(13) "Hello, world!"— une chaîne de 13 octets. Voir la longueur est utile pour détecter des espaces cachés ou des problèmes d'encodage.- Pour le tableau, chaque ligne
[key]=>affiche la clé, puis le type et la valeur de l'élément en dessous.
Rendu de chaque type
var_dump() formate chaque type scalaire différemment, ce qui la rend plus informative que l'affichage d'une valeur. Le tableau récapitule la notation :
| Type PHP | Exemple de sortie |
|---|---|
| integer | int(42) |
| float | float(3.14) |
| string | string(5) "hello" |
| boolean | bool(true) |
| null | NULL |
| array | array(2) { ... } |
| object | object(ClassName)#1 (2) { ... } |
Les cas boolean et NULL sont ceux dont les développeurs ont le plus besoin. echo true affiche 1 et echo false / echo null n'affichent rien, il est donc impossible de distinguer false, null et "" avec echo — mais var_dump() les montre clairement :
<?php
var_dump(true);
var_dump(false);
var_dump(null);
var_dump("");
var_dump(0);
var_dump("0");
?>bool(true)
bool(false)
NULL
string(0) ""
int(0)
string(1) "0"Remarquez comment var_dump() distingue l'entier 0 de la chaîne "0" — une distinction qui provoque silencieusement des bugs dans les comparaisons souples. Voir Types de données PHP et gettype() pour en savoir plus sur la vérification des types.
Affichage des objets et des structures imbriquées
var_dump() parcourt récursivement les objets et les tableaux imbriqués, en affichant la visibilité (public / protected / private) pour chaque propriété :
<?php
class User {
public string $name = "Ada";
protected int $age = 36;
private array $roles = ["admin", "editor"];
}
var_dump(new User());
?>object(User)#1 (3) {
["name"]=>
string(3) "Ada"
["age":protected]=>
int(36)
["roles":"User":private]=>
array(2) {
[0]=>
string(5) "admin"
[1]=>
string(6) "editor"
}
}Le #1 est l'identifiant interne de l'instance de l'objet, et (3) est le nombre de propriétés.
Affichage de plusieurs valeurs à la fois
Comme var_dump() est variadique, vous pouvez inspecter plusieurs variables en un seul appel plutôt que d'écrire une ligne par variable :
<?php
$id = 7;
$name = "Grace";
$active = true;
var_dump($id, $name, $active);
?>int(7)
string(5) "Grace"
bool(true)var_dump() vs. print_r() vs. var_export()
Ces trois fonctions se recoupent, aussi choisir la bonne est important :
| Fonction | Affiche les types ? | Sortie PHP valide ? | Idéale pour |
|---|---|---|---|
var_dump() | Oui | Non | Débogage — le plus de détails |
print_r() | Non | Non | Une vue lisible et conviviale |
var_export() | Non | Oui | Génération de code / dumps de config |
Utilisez var_dump() quand vous avez besoin de voir les types et longueurs exacts. Optez pour print_r() quand vous voulez juste un aperçu rapide et moins encombrant de la structure d'un tableau, et pour var_export() quand vous voulez une sortie que vous pouvez coller dans du code source.
Capturer la sortie sous forme de chaîne
var_dump() ne renvoie rien, vous ne pouvez donc pas faire $x = var_dump($y). Pour capturer sa sortie (pour la journalisation, par exemple), encapsulez-la dans une mise en tampon de sortie :
<?php
$data = ["status" => 200, "ok" => true];
ob_start();
var_dump($data);
$dump = ob_get_clean();
// $dump now holds the var_dump output as a string
echo strlen($dump) . " characters captured\n";
?>Notes et pièges
- Destination de la sortie.
var_dump()écrit dans la sortie standard. Exécuté dans un navigateur, le PHP moderne enveloppe le dump dans des balises<pre>pour que la structure soit lisible ; en ligne de commande, il affiche du texte brut. - Des dumps oubliés partent en production. Un
var_dump()laissé par inadvertance dans le code exposera des données internes aux utilisateurs. Supprimez les dumps de débogage avant de déployer, ou conditionnez-les à un indicateur de débogage. - Les chaînes affichent la longueur en octets, pas en caractères.
string(13)compte les octets ; une chaîne multioctet (UTF-8) peut indiquer un nombre plus grand que le nombre de caractères visibles. - Utilisez Xdebug pour une sortie plus agréable. Avec l'extension Xdebug installée,
var_dump()est automatiquement surchargé pour produire une sortie colorée et limitée en profondeur, bien plus facile à parcourir.
Conclusion
var_dump() est la fonction de référence pour inspecter ce que représente réellement une valeur lors du développement PHP. Elle révèle le type, la longueur, la structure et la visibilité en un seul appel — des détails que echo ou print cachent. Optez pour print_r() quand vous voulez une lecture plus claire d'un tableau, et pour var_export() quand vous avez besoin de code PHP réutilisable, mais pour l'analyse brute de débogage, var_dump() est difficile à battre.