var_export

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

var_exportLiefert den Inhalt einer Variablen als parsbaren PHP-Code

Beschreibung

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

var_export() gibt strukturierte Informationen zum Inhalt der übergebenen Variable zurück. Das Verhalten ist ähnlich dem der Funktion var_dump(), allerdings ist hier das Ergebnis valider PHP-Code mit dem sich der Inhalt der Variable wiederherstellen lässt.

Parameter-Liste

value

Die zu exportierende Variable.

return

Wird dieser Parameter auf true gesetzt, so wird das Ergebnis nicht direkt ausgegeben, sondern als String zurückgegeben.

Rückgabewerte

Gibt die Darstellung der Variablen als PHP-Code zurück, wenn der return-Parameter genutzt wird und als Wert true ergibt. Andernfalls gibt die Funktion null zurück.

Changelog

VersionBeschreibung
8.2.0 Exportierte Klassennamen sind nun vollständig qualifiziert; zuvor wurde der vorangestellte Backslash weggelassen.
7.3.0stdClass-Objekte werden nun als ein Array exportiert, das in ein Objekt umgewandelt wird ((object) array( ... )), anstatt die nicht existente Methode stdClass::__setState() zu verwenden. Der praktische Effekt ist, dass stdClass nun exportierbar ist, und der erzeugte Code sogar mit früheren Versionen von PHP funktioniert.

Beispiele

Beispiel #1 var_export()-Beispiele

<?php
$a
= array (1, 2, array ("a", "b", "c"));
var_export($a);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

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

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

3.1

Beispiel #2 Export von stdClass (seit PHP 7.3.0)

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

var_export($person);

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Beispiel #3 Export von Klassen

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Beispiel #4 Nutzung von __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(

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Anmerkungen

Hinweis:

Variablen vom Typ resource können von dieser Funktion nicht exportiert werden.

Hinweis:

var_export() ist nicht in der Lage, zirkuläre Referenzen aufzulösen, da es annähernd unmöglich ist, hierfür gültigen PHP-Code zu erzeugen. In solchen Fällen empfiehlt sich stattdessen die Nutzung der serialize() für eine vollständige Darstellung von entsprechenden Arrays oder Objekten.

Warnung

Vor PHP 8.2.0 war beim Export von Objekten mittels var_export() der führende Backslash zwecks größtmöglicher Kompatibilität nicht im Namen von Klassen in Namensräumen enthalten.

Hinweis:

Um das von var_export() erzeugte PHP ausführen zu können, müssen alle verarbeiteten Objekte die magische Methode __set_state implementieren. Die einzige Ausnahme ist stdClass, die unter Verwendung eines Arrays, das zu einem Objekt umgewandelt wird, exportiert wird.

Siehe auch

  • print_r() - Gibt Variablen-Informationen in lesbarer Form aus
  • serialize() - Erzeugt eine speicherbare Repräsentation eines Wertes
  • var_dump() - Gibt alle Informationen zu einer Variablen aus
To Top