W3docs

var_export()

La fonction var_export() produit une représentation valide en PHP d'une variable, pouvant être réutilisée comme code PHP.

Introduction

var_export() est une fonction PHP intégrée qui produit une représentation en code PHP valide d'une variable. Contrairement à un simple print, la chaîne qu'elle renvoie est analysable : vous pourriez la copier dans un fichier .php (ou la passer à eval()) pour obtenir une valeur identique. Cela la rend idéale pour :

  • Générer des fichiers de configuration ou de données en cache — écrire l'export sur disque et l'inclure avec require ultérieurement.
  • Inspecter la structure exacte d'une variable lors du débogage.
  • Capturer des valeurs attendues dans les tests et la documentation.

Cette page couvre la syntaxe, le drapeau $return, la façon dont chaque type de données est rendu, et la différence entre var_export(), var_dump() et print_r().

Syntaxe

var_export(mixed $value, bool $return = false): ?string
ParamètreDescription
$valueLa variable ou expression à exporter.
$returnLorsque false (par défaut), la représentation est affichée directement et la fonction retourne null. Lorsque true, la représentation est retournée sous forme de chaîne au lieu d'être affichée.

L'erreur la plus courante est d'oublier le second argument : $result = var_export($x); laisse $result à null car la sortie est allée directement vers stdout. Pour la capturer, passez true.

Exemple de base

php— editable, runs on the server

Ici $var1 est un entier, $var2 une chaîne, et $array un tableau indexé. Chaque appel retourne une chaîne qui est elle-même du PHP valide :

10
'Hello, world!'
array (
  0 => 'apple',
  1 => 'banana',
  2 => 'cherry',
)

Notez que les chaînes sont entourées de guillemets simples et que les tableaux conservent leurs clés explicites — la sortie d'un tableau pourrait être assignée directement à une variable.

Rendu de chaque type

<?php
var_export(true);   echo "\n"; // true
var_export(null);   echo "\n"; // NULL
var_export(3.14);   echo "\n"; // 3.14
var_export('a');    echo "\n"; // 'a'

$assoc = ['name' => 'Ann', 'age' => 30];
var_export($assoc); echo "\n";
?>

Sortie :

true
NULL
3.14
'a'
array (
  'name' => 'Ann',
  'age' => 30,
)

Les booléens deviennent true/false, null devient le NULL en majuscules, et les tableaux associatifs conservent leurs clés de type string — tout est du PHP syntaxiquement valide.

Export d'objets

Pour les objets, var_export() émet un appel __set_state() afin que la structure puisse, en principe, être reconstruite :

<?php
class Point {
    public int $x = 1;
    public int $y = 2;
}
var_export(new Point());
?>
\Point::__set_state(array(
   'x' => 1,
   'y' => 2,
))

Pour reconstruire réellement un tel objet à partir de l'export, la classe doit définir une méthode statique __set_state(). Sans elle, l'évaluation de la sortie génère une erreur — donc pour l'aller-retour d'objets, serialize() est généralement plus adapté.

var_export() vs. var_dump() vs. print_r()

FonctionFormat de sortieAffiche les types ?Retournable en chaîne ?PHP valide ?
var_export()Code PHP analysableImplicitementOui ($return = true)Oui
var_dump()Type + valeur + longueurOui (explicite)Non (affichage uniquement)Non
print_r()Arborescence lisibleNonOui (2e argument)Non

Utilisez var_export() quand vous avez besoin de code que vous pouvez stocker ou réexécuter, var_dump() quand vous avez besoin des types et des longueurs de chaînes pour le débogage, et print_r() pour un aperçu lisible rapide.

Un usage pratique : fichiers de données en cache

Comme l'export est du PHP valide, vous pouvez persister des données calculées et les charger rapidement à la prochaine requête :

<?php
$config = ['debug' => true, 'level' => 3, 'tags' => ['a', 'b']];

// Write a loadable PHP file.
file_put_contents('cache.php', '<?php return ' . var_export($config, true) . ';');

// Later, somewhere else:
$loaded = require 'cache.php';
?>

$loaded est identique au tableau $config original — aucune analyse JSON ni étape de désérialisation requise.

Conclusion

var_export() transforme une variable en code PHP prêt à l'emploi. Passez $return = true pour capturer ce code sous forme de chaîne, gardez à l'esprit que null s'affiche en NULL et que les chaînes sont entre guillemets simples, et préférez serialize() lorsque vous avez besoin de faire un aller-retour avec des objets. Pour le débogage avec connaissance des types, comparez-le avec var_dump() et print_r().

Pratique

Pratique
Quelle est l'utilité de la fonction var_export() en PHP ?
Quelle est l'utilité de la fonction var_export() en PHP ?
Was this page helpful?