var_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

var_exportRetourne le code PHP utilisé pour générer une variable

Description

var_export(mixed$value, bool$return = false): ?string

var_export() retourne des données structurées sur la variable donnée. C'est le même principe que var_dump() mais avec une exception : le résultat retourné est du code PHP valide.

Liste de paramètres

value

La variable que vous voulez exporter.

return

Si utilisé et mis à true, var_export() retournera la représentation de la variable au lieu de l'afficher.

Valeurs de retour

Retourne la représentation de la variable lorsque le paramètre return est utilisé et évalué à true. Autrement, cette fonction retournera null.

Historique

VersionDescription
8.2.0 Les noms de classe exportés sont désormais pleinement qualifiés. Auparavant, l'antislash principal était omis.
7.3.0 Exporte désormais les objets stdClass en tant qu'un tableau transtyper vers un objet ((object) array( ... )), au lieu d'utiliser la méthode non existante stdClass::__setState(). L'effet pratique est que désormais stdClass est exportable, et que le code résultant fonctionnera même sur des versions antérieure de PHP.

Exemples

Exemple #1 Exemple avec var_export()

<?php

$a
= array (1, 2, array ("a", "b", "c"));
var_export($a);

?>

L'exemple ci-dessus va afficher :

array ( 0 => 1, 1 => 2, 2 => array ( 0 => 'a', 1 => 'b', 2 => 'c', ), )
<?php

$b
= 3.1;
$v = var_export($b, true);
echo
$v; // 3.1

?>

L'exemple ci-dessus va afficher :

3.1

Exemple #2 Exporter stdClass (à partir de PHP 7.3.0)

<?php
$person
= new stdClass;
$person->name = 'ElePHPant ElePHPantsdotter';
$person->website = 'https://php.net/elephpant.php';

var_export($person);

L'exemple ci-dessus va afficher :

(object) array( 'name' => 'ElePHPant ElePHPantsdotter', 'website' => 'https://php.net/elephpant.php', )

Exemple #3 Exporter des classes

<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>

L'exemple ci-dessus va afficher :

A::__set_state(array( 'var' => 5, ))

Exemple #4 Utilisation de __set_state

<?php
class A
{
public
$var1;
public
$var2;

public static function
__set_state($an_array)
{
$obj = new A;
$obj->var1 = $an_array['var1'];
$obj->var2 = $an_array['var2'];
return
$obj;
}
}

$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';

eval(
'$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(

L'exemple ci-dessus va afficher :

object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" }

Notes

Note:

Les variables de type ressource ne peuvent être exportées par cette fonction.

Note:

var_export() ne gère pas les références circulaires car il serait impossible de générer un code PHP analysable pour ce type de données. Si vous voulez faire quelque chose avec la représentation complète d'un tableau ou d'un objet, utilisez la fonction serialize().

Avertissement

Antérieur à PHP 8.2.0, lorsque var_export() exporte des objets, l'antislash initial n'est pas inclus dans l'espace de nom de la classe et ce, pour un maximum de compatibilité.

Note:

Pour être capable d'évaluer le PHP généré par var_export(), tous les objets analysés doivent implémenter la méthode magique __set_state. La seule exception est stdClass; qui est exportée en utilisant un cast d'un tableau à un objet.

Voir aussi

  • print_r() - Affiche des informations lisibles pour une variable
  • serialize() - Génère une représentation stockable d'une valeur
  • var_dump() - Affiche les informations d'une variable
To Top