(PHP 4 >= 4.2.0, PHP 5, PHP 7)
var_export — Gibt den Inhalt einer Variablen als parsbaren PHP-Code zurück
var_export() liefert strukturierte Informationen zum Inhalt der übergebenen Variable. Das Verhalten ist ähnlich dem der var_dump(), allerdings ist hier das Ergebnis valider PHP-Code mit dem sich der Inhalt der Variable wieder herstellen lässt.
expression
Die zu exportierende Variable.
return
Wird dieser Parameter auf TRUE
gesetzt so wird das Ergebnis nicht
direkt ausgegeben sondern als string zurückgegeben.
Liefert die Repräsentation der Variablen als PHP-Code wenn der
return
-Parameter genutzt wird und als Wert TRUE
ergibt. Anderenfalls gibt die Funktion NULL
zurück.
Hinweis:
Wenn der
return
Parameter verwendet wird, benutzt diese Funktion intern Ausgabepufferung und kann daher nicht in einer ob_start()-Callbackfunktion eingesetzt werden.
Version | Beschreibung |
---|---|
5.1.0 | Möglichkeit Klassen und Arrays die Klassen enthalten mit Hilfe der 'magischen' __set_state Methode zu exportieren. |
Beispiel #1 var_export() Beispiel
<?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 Klassen ab PHP 5.1.0
<?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 #3 Nutzung von __set_state (ab PHP 5.1.0)
<?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(
// 'var1' => 5,
// 'var2' => 'foo',
// ));
var_dump($b);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" }
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 statt dessen die Nutzung der serialize() für eine vollständige Repräsentation von entsprechenden Arrays oder Objekten.
Wenn var_export() Objekte exportiert, ist zwecks größtmöglicher Kompatibilität der führende Backslash nicht im Namen von Klassen in Namensräumen enthälten.
Hinweis:
Um das von var_export() erzeugte PHP ausführen zu können, müssen alle verarbeiteten Objekte die magische __set_state Methode implementieren. Es ist zu beachten, dass StdClass __set_state() nicht implementiert.