W3docs

var_export()

Die Funktion var_export() gibt eine parsierbare PHP-Code-Darstellung einer Variablen aus oder gibt sie zurück.

Einführung

var_export() ist eine eingebaute PHP-Funktion, die eine gültige PHP-Code-Darstellung einer Variablen erzeugt. Anders als ein einfaches print ist die zurückgegebene Zeichenkette parsierbar: Man könnte sie in eine .php-Datei kopieren (oder an eval() übergeben) und erhält einen identischen Wert. Das macht sie ideal für:

  • Generierung von gecachten Konfigurations- oder Datendateien — den Export auf Disk schreiben und später per require laden.
  • Untersuchung der genauen Struktur einer Variablen beim Debuggen.
  • Erfassen von Erwartungswerten in Tests und Dokumentation.

Diese Seite behandelt die Syntax, das $return-Flag, die Darstellung der einzelnen Datentypen sowie die Unterschiede zwischen var_export(), var_dump() und print_r().

Syntax

var_export(mixed $value, bool $return = false): ?string
ParameterBeschreibung
$valueDie Variable oder der Ausdruck, der exportiert werden soll.
$returnBei false (Standard) wird die Darstellung direkt ausgegeben und die Funktion gibt null zurück. Bei true wird die Darstellung als Zeichenkette zurückgegeben, anstatt ausgegeben zu werden.

Der häufigste Fehler ist das Vergessen des zweiten Arguments: $result = var_export($x); lässt $result als null, da die Ausgabe direkt nach stdout ging. Um sie aufzufangen, muss true übergeben werden.

Einfaches Beispiel

php— editable, runs on the server

Hier ist $var1 ein Integer, $var2 eine Zeichenkette und $array ein indiziertes Array. Jeder Aufruf gibt eine Zeichenkette zurück, die selbst gültiges PHP ist:

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

Zu beachten ist, dass Zeichenketten in einfache Anführungszeichen eingeschlossen und Array-Schlüssel explizit ausgegeben werden — die Ausgabe eines Arrays könnte direkt einer Variablen zugewiesen werden.

Darstellung der einzelnen Typen

<?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";
?>

Ausgabe:

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

Boolesche Werte werden zu true/false, null wird zum Großbuchstaben NULL, und assoziative Arrays behalten ihre Zeichenkettenschlüssel — alles syntaktisch gültiges PHP.

Objekte exportieren

Bei Objekten gibt var_export() einen __set_state()-Aufruf aus, damit die Struktur grundsätzlich wiederhergestellt werden kann:

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

Um ein Objekt aus dem Export tatsächlich wiederherzustellen, muss die Klasse eine statische __set_state()-Methode definieren. Ohne sie wirft die Auswertung der Ausgabe einen Fehler — für das Hin- und Zurückkonvertieren von Objekten ist daher serialize() meist die bessere Wahl.

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

FunktionAusgabeformatZeigt Typen?Als Zeichenkette rückgebbar?Gültiges PHP?
var_export()Parsierbarer PHP-CodeImplizitJa ($return = true)Ja
var_dump()Typ + Wert + LängeJa (explizit)Nein (nur Ausgabe)Nein
print_r()Menschenlesbare BaumstrukturNeinJa (2. Argument)Nein

var_export() wird verwendet, wenn Code gespeichert oder erneut ausgeführt werden soll, var_dump() wenn Typen und Zeichenkettenlängen zum Debuggen benötigt werden, und print_r() für einen schnellen lesbaren Überblick.

Praktischer Einsatz: gecachte Datendateien

Da der Export gültiges PHP ist, können berechnete Daten dauerhaft gespeichert und beim nächsten Aufruf schnell geladen werden:

<?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 ist identisch mit dem ursprünglichen $config-Array — kein Parsen von JSON oder ein Unserialize-Schritt erforderlich.

Fazit

var_export() wandelt eine Variable in ausführbaren PHP-Code um. Mit $return = true wird dieser Code als Zeichenkette erfasst. Zu beachten ist, dass null als NULL ausgegeben wird und Zeichenketten in einfache Anführungszeichen eingeschlossen sind. Für das Hin- und Zurückkonvertieren von Objekten sollte stattdessen serialize() verwendet werden. Für typbewusstes Debuggen bietet sich ein Vergleich mit var_dump() und print_r() an.

Übungen

Übung
Wofür wird die Funktion var_export() in PHP verwendet?
Wofür wird die Funktion var_export() in PHP verwendet?
Was this page helpful?