var_export()
La función var_export() de PHP genera una representación en código PHP válido de una variable, ideal para caché, depuración y documentación.
Introducción
var_export() es una función integrada de PHP que produce una representación de una variable como código PHP válido. A diferencia de un simple print, la cadena que devuelve es analizable: podrías copiarla de vuelta en un archivo .php (o pasarla a eval()) y obtener un valor idéntico. Eso la hace ideal para:
- Generar archivos de configuración o datos en caché — escribe la exportación en disco y usa
requiremás tarde. - Inspeccionar la estructura exacta de una variable durante la depuración.
- Guardar valores esperados como instantánea en pruebas y documentación.
Esta página cubre la sintaxis, el indicador $return, cómo se representa cada tipo de dato y en qué se diferencia var_export() de var_dump() y print_r().
Sintaxis
var_export(mixed $value, bool $return = false): ?string| Parámetro | Descripción |
|---|---|
$value | La variable o expresión a exportar. |
$return | Cuando es false (valor por defecto), la representación se imprime directamente y la función devuelve null. Cuando es true, la representación se devuelve como string en lugar de imprimirse. |
El error más común es olvidar el segundo argumento: $result = var_export($x); deja $result como null porque la salida fue directamente a stdout. Para capturarla, pasa true.
Ejemplo básico
Aquí $var1 es un entero, $var2 un string y $array un array indexado. Cada llamada devuelve un string que es en sí mismo PHP válido:
10
'Hello, world!'
array (
0 => 'apple',
1 => 'banana',
2 => 'cherry',
)Observa que los strings están envueltos en comillas simples y los arrays conservan sus claves de forma explícita — la salida de un array podría asignarse directamente a una variable.
Cómo se representa cada tipo
<?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";
?>Salida:
true
NULL
3.14
'a'
array (
'name' => 'Ann',
'age' => 30,
)Los booleanos se convierten en true/false, null se convierte en NULL en mayúsculas, y los arrays asociativos preservan sus claves de string — todo PHP sintácticamente válido.
Exportar objetos
Para los objetos, var_export() emite una llamada a __set_state() para que la estructura pueda, en principio, reconstruirse:
<?php
class Point {
public int $x = 1;
public int $y = 2;
}
var_export(new Point());
?>\Point::__set_state(array(
'x' => 1,
'y' => 2,
))Para reconstruir realmente dicho objeto a partir de la exportación, la clase debe definir un método estático __set_state(). Sin él, evaluar la salida lanza un error — por lo que para hacer viajes de ida y vuelta con objetos, serialize() suele ser una mejor opción.
var_export() vs. var_dump() vs. print_r()
| Función | Formato de salida | ¿Muestra tipos? | ¿Devuelve string? | ¿PHP válido? |
|---|---|---|---|---|
var_export() | Código PHP analizable | Implícitamente | Sí ($return = true) | Sí |
var_dump() | Tipo + valor + longitud | Sí (explícito) | No (solo imprime) | No |
print_r() | Árbol legible por humanos | No | Sí (2.º argumento) | No |
Usa var_export() cuando necesites código que puedas almacenar o volver a ejecutar, var_dump() cuando necesites tipos y longitudes de string para depurar, y print_r() para un vistazo rápido y legible.
Un uso práctico: archivos de datos en caché
Como la exportación es PHP válido, puedes persistir datos calculados y cargarlos rápidamente en la siguiente petición:
<?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 es idéntico al array $config original — no se requiere análisis de JSON ni paso de deserialización.
Conclusión
var_export() convierte una variable en código PHP listo para ejecutar. Pasa $return = true para capturar ese código como string, recuerda que null se imprime como NULL y los strings van entre comillas simples, y recurre a serialize() cuando necesites hacer viajes de ida y vuelta con objetos. Para depuración con tipos, compáralo con var_dump() y print_r().