(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 |
---|---|
7.3.0 |
stdClass Objekte werden nun als ein Array exportiert, das zu
einem Objekt gecastet 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.
|
5.1.0 | Möglichkeit Klassen und Arrays die Klassen enthalten mit Hilfe der 'magischen' __set_state Methode zu exportieren. |
Beispiel #1 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 #2 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 #3 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 #4 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. Die einzige Ausnahme ist stdClass, die unter Verwendung eines Arrays, das zu einem Objekt gecastet wird, exportiert wird.