Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

PHP var_export(): Variablen als validen PHP-Code exportieren (Umfassender Guide)

Sie befinden sich: Home > Php Tutorial > Variablen in einer...

Variablen in einer lesbaren Form ausgeben ohne Datentypen


Eintrag am:  27.12.2022
Hits / Besucher:  1185
Sprache:  Deutsch
Kategorie:  Fortgeschrittene...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Mit var_export() kannst du beliebige Variablen so ausgeben, dass der zurückgegebene String direkt als PHP-Code wiederverwendbar ist – ein mächtiges Werkzeug, das weit über klassische Debug-Ausgaben hinausgeht.

Modernes Titelbild zu PHP var_export() mit PHP-Logo, Code und Datensymbolen.

 

Einleitung: Was ist PHP var_export() und warum ist es nützlich?

var_export() erzeugt eine PHP-Code-Repräsentation einer Variable. Du erhältst eine Zeichenkette, die du ohne Anpassung in ein PHP-Skript einfügen und sofort ausführen kannst. Besonders praktisch ist dieser Export, wenn du Konfigurationen abspeichern oder Testdaten direkt als PHP-Code hinterlegen möchtest.

Der größte Vorteil: Die Ausgabe von var_export() bleibt immer ausführbarer PHP-Code – anders als bei Debug-Funktionen wie var_dump() oder print_r(), die nur zur Analyse dienen.

zur Abgrenzung:

  • var_dump() liefert ausführliche Informationen für Debug-Zwecke, aber kein gültiges PHP.
  • print_r() ist menschenlesbar, aber nicht direkt nutzbar, um Werte zurückzuschreiben.

Syntax und Parameter von var_export()

string|null var_export(mixed $value, bool $return = false)

Parameter:

  • $value (mixed, erforderlich): Die Variable, die du exportieren möchtest.
    Unterstützt: Integer, Float, Boolean, null, String, Arrays, Objekte (bei Klassen mit __set_state()), stdClass.

  • $return (bool, optional, Standard: false):

    • false: Gibt die Ausgabe direkt aus, Rückgabewert ist null.
    • true: Gibt den Export als String zurück (kein Echo).

Du brauchst $return = true, um das Ergebnis weiterzuverarbeiten (z.B. für Dateischreibvorgänge).

Rückgabewert von var_export()

  • Bei $return = true: Rückgabe ist ein String mit valider PHP-Syntax.
  • Bei $return = false: Rückgabewert ist null, die Ausgabe erfolgt direkt (an den Output-Stream, etwa Browser oder CLI).

Praxis: Willst du die Export-Ausgabe speichern, setze immer $return = true.

Grundlegende Anwendungsbeispiele (inklusive Output)

Im Alltag arbeitest du oft mit einfachen Werten wie Zahlen oder Zeichenketten – var_export() zeigt dir diese sofort im gültigen PHP-Format an, sodass du das Ergebnis problemlos in ein Skript einfügen kannst.

4.1. Export einfacher Datentypen

String

$sText = "Hallo\nWelt!";

var_export($sText);

Output:

'Hallo\nWelt!'

Erklärung: Sonderzeichen wie \n werden escaped – das Ergebnis bleibt gültiger PHP-Code.

Integer

$iZahl = 42;

var_export($iZahl);

Output:

42

Float

$fZahl = 3.1415;

var_export($fZahl);

Output:

3.1415

Boolean

$bWert = true;

var_export($bWert);

Output:

true


Null

$mNull = null;

var_export($mNull);

Output:

NULL

4.2. Die Macht des $return-Parameters

Der $return-Parameter entscheidet, ob var_export() das Ergebnis direkt ausgibt oder als String zurückliefert – so steuerst du flexibel, ob du den PHP-Code weiterverarbeiten oder nur anzeigen möchtest.

Direkte Ausgabe vs. Speicherung

$aTest = ['eins', 'zwei'];

var_export($aTest, false);
// direkt ausgegeben
$code = var_export($aTest, true);
// String gespeichert
echo $code;
// explizit ausgeben

Export in eine Datei

<?php

$aKonfig = ['host' => 'localhost', 'port' => 3306];
file_put_contents('config.php', '<?php return ' . var_export($aKonfig, true) . ';');

Jetzt kannst du später einfach include 'config.php'; verwenden, um das Array zu laden.

var_export() mit Arrays

Ob du mit einfachen Listen oder komplexen Schlüssel-Wert-Paaren arbeitest: var_export() gibt beide Array-Typen so aus, dass du sie direkt in deinen PHP-Code übernehmen kannst.

5.1. Numerische und assoziative Arrays

Einfaches Array

$aEinfach = [1, 2, 3];

echo var_export($aEinfach, true);

Output:

array (

0 => 1,
1 => 2,
2 => 3,
)

Assoziatives Array

$aAssoc = ['user' => 'Max', 'id' => 5];

echo var_export($aAssoc, true);

Output:

array (

'user' => 'Max',
'id' => 5,
)

5.2. Mehrdimensionale Arrays

Auch verschachtelte, mehrdimensionale Arrays exportiert var_export() zuverlässig in einer klar strukturierten PHP-Syntax – ideal, wenn du komplexe Datenbestände sichern oder weiterverarbeiten willst.

$aMulti = [

'users' => [
['name' => 'Tom'],
['name' => 'Anna']
],
'active' => true
];
echo var_export($aMulti, true);

Output (gekürzt):

array (

'users' =>
array (
0 =>
array (
'name' => 'Tom',
),
1 =>
array (
'name' => 'Anna',
),
),
'active' => true,
)

var_export() und Objekte: Der Umgang mit __set_state()

Damit var_export() ein Objekt als gültigen PHP-Code zurückgeben kann, muss die zugehörige Klasse eine spezielle Methode namens __set_state() implementieren – nur dann ist eine spätere Wiederherstellung des Objekts möglich.

6.1. Warum __set_state() benötigt wird

PHP exportiert Objekte mit var_export() in folgender Form:
ClassName::__set_state(array(...))
Die Klasse muss dafür eine statische Methode __set_state() implementieren.

6.2. Beispiel: Export eines Objekts mit __set_state()

class Demo

{
public $wert;
public static function __set_state($aProps) {
$obj = new self();
$obj->wert = $aProps['wert'];
return $obj;
}
}
$oDemo = new Demo();
$oDemo->wert = 'Beispiel';

$export = var_export($oDemo, true);
echo $export;

Output:

Demo::__set_state(array(

'wert' => 'Beispiel',
))

Du kannst so ein Objekt mit eval() oder durch Speichern/Laden wiederherstellen – aber eval nur mit vertrauenswürdigen Quellen nutzen!

6.3. Was passiert ohne __set_state()?

Fehlt die Methode in der Klasse, kann der Export zu einem Fatal Error führen – oder das Objekt wird nicht korrekt wiederhergestellt (abhängig von PHP-Version und Objekttyp).

6.4. Sonderfall stdClass

$oStd = new stdClass();

$oStd->x = 1;
echo var_export($oStd, true);

Output (je nach PHP-Version):

(stdClass::__set_state(array(

'x' => 1,
)))

Oder früher als

(object) array('x' => 1)

Wichtige Einschränkungen und Fallstricke von var_export()

Ressourcen wie Datenbankverbindungen oder Dateizeiger lassen sich nicht als gültigen PHP-Code exportieren – bei solchen Variablen erhältst du lediglich den Wert NULL statt einer verwertbaren Repräsentation.

7.1. Keine Unterstützung für Ressourcen

$handle = fopen(__FILE__, 'r');

echo var_export($handle, true);

Output:

NULL

Ressourcen wie Dateizeiger kann var_export() nicht exportieren.

7.2. Problem: Zirkuläre Referenzen (Rekursion)

$a = [];

$a['selbst'] =& $a;
echo var_export($a, true);

Fatal Error:
Nesting level too deep - recursive dependency?

Tipp: Prüfe komplexe Strukturen auf Referenzen, um das Debugging zu erleichtern. Für diese Fälle ist serialize() die bessere Wahl.

7.3. Performance-Überlegungen

Sehr große Arrays oder Objekte können Speicher und Zeit beanspruchen. serialize() arbeitet meist effizienter, ist aber nicht menschenlesbar.

var_export() im Vergleich: Wann welche Funktion nutzen?

Während die eine Funktion PHP-Code zur Wiederverwendung liefert, zeigt die andere detaillierte Typinformationen für Debug-Zwecke an – wähle je nach Ziel zwischen Wiederverwertbarkeit und maximaler Transparenz.

8.1. var_export() vs. var_dump()

Funktion Zielgruppe Rückgabe/Output Direkt als PHP nutzbar
var_export() Entwickler, System PHP-Code als String/Output Ja
var_dump() Entwickler Typen + Werte, Debug-Info Nein

Beispiel:

$a = [1, 'x' => true];

var_export($a);
// Output: array ( 0 => 1, 'x' => true, )
var_dump($a);
// Output: array(2) { [0]=> int(1) ["x"]=> bool(true) }

8.2. var_export() vs. print_r()

Die eine Methode eignet sich zum Erzeugen von echtem PHP-Code für Entwickler, die andere bleibt auf menschlich lesbare Ausgaben beschränkt und taugt nicht für die direkte Wiederverwendung im Code.

Funktion Zielgruppe Rückgabe/Output PHP-Code nutzbar
var_export() Entwickler, System PHP-Code Ja
print_r() Menschen Lesbare Ausgabe Nein

8.3. var_export() vs. serialize() / json_encode()

Je nachdem, ob du menschenlesbaren PHP-Code, flexible Datenübertragung oder kompakten Austausch mit anderen Sprachen brauchst, spielt jede dieser Funktionen ihre eigenen Stärken und Schwächen aus.

Funktion Ziel Vorteil Nachteil
var_export() PHP-Code speichern Direkt als PHP nutzbar Keine Ressourcen, zirkulär
serialize() Speichern/Übertragen Schnell, flexibel Nicht lesbar, nur PHP
json_encode() Austausch (JS etc.) Kompakt, lesbar Typenverluste, keine Objekte

Cheat Sheet:

  • Konfigurationsdatei für PHP: → var_export()
  • Persistenz für PHP, auch mit Referenzen: → serialize()
  • APIs, Web, JavaScript: → json_encode()
  • Debug, Inspektion: → var_dump(), print_r()

Fortgeschrittene Anwendungsfälle und Best Practices

Mit der Funktion kannst du Konfigurationsdaten direkt als PHP-Code exportieren, was das spätere Einlesen besonders effizient und fehlertolerant macht – ein klarer Vorteil gegenüber Formaten wie JSON oder INI.

9.1. Generieren von Konfigurationsdateien

<?php

$aConfig = ['theme' => 'light', 'debug' => false];
file_put_contents('settings.php', '<?php return ' . var_export($aConfig, true) . ';');

Jetzt lädst du die Einstellungen einfach mit

$a = include 'settings.php';

9.2. Test-Fixtures/Mock-Daten

Mit var_export() kannst du komplexe Testdaten generieren, in PHP speichern und in Unit-Tests oder Dev-Umgebungen wiederverwenden.

9.3. Vorsicht bei eval() mit var_export()

Niemals unkontrolliert eval(var_export(...)) auf Daten aus unbekannter Quelle aufrufen – das öffnet Tür und Tor für Angriffe. Immer kontrollieren, woher die Daten stammen.

9.4. PHP-Versionsunterschiede

  • Ab PHP 5.1: __set_state() für Objekte
  • Export von stdClass kann je nach Version als (object) array(...) oder als stdClass::__set_state() erfolgen.
  • Namespaces: Volle Qualifizierung im Export-String.

Fazit: var_export() meistern

var_export() ist ein mächtiges Werkzeug für Entwickler, die Variablen als lauffähigen PHP-Code speichern wollen. Ob als Konfigurationsdatei, Testdaten oder zur Code-Generierung – der Nutzen liegt in der klaren, ausführbaren Repräsentation.
Allerdings musst du Einschränkungen kennen: Ressourcen werden nicht unterstützt, zirkuläre Referenzen führen zu Fehlern und eval birgt Risiken. Wer das beachtet, gewinnt ein vielseitiges Werkzeug für viele Entwicklungsaufgaben.
Probier die Funktion mit eigenen Daten aus – je komplexer, desto spannender wird der Export.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.