var_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

var_exportDevuelve el código PHP utilizado para generar una variable

Descripción

var_export(mixed $value, bool $return = false): ?string

var_export() devuelve datos estructurados sobre la variable dada. Es el mismo principio que var_dump() pero con una excepción: el resultado devuelto es código PHP válido.

Parámetros

value

La variable que se desea exportar.

return

Si se utiliza y se establece a true, var_export() devolverá la representación de la variable en lugar de mostrarla.

Valores devueltos

Devuelve la representación de la variable cuando el parámetro return se utiliza y se evalúa a true. De lo contrario, esta función devolverá null.

Historial de cambios

Versión Descripción
8.2.0 Los nombres de clase exportados son ahora completamente calificados. Anteriormente, la barra invertida inicial era omitida.
7.3.0 Exporta ahora los objetos stdClass como un tableau convertido a un objeto ((object) array( ... )), en lugar de utilizar el método no existente stdClass::__set_state(). El efecto práctico es que ahora stdClass es exportable, y que el código resultante funcionará incluso en versiones anteriores de PHP.

Ejemplos

Ejemplo #1 Ejemplo con var_export()

<?php

$a
= array (1, 2, array ("a", "b", "c"));
var_export($a);

?>

El resultado del ejemplo sería:

array (
  0 => 1,
  1 => 2,
  2 =>
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
<?php

$b
= 3.1;
$v = var_export($b, true);
echo
$v; // 3.1

?>

El resultado del ejemplo sería:

3.1

Ejemplo #2 Exportar stdClass (a partir de PHP 7.3.0)

<?php
$person
= new stdClass;
$person->name = 'ElePHPant ElePHPantsdotter';
$person->website = 'https://php.net/elephpant.php';

var_export($person);

El resultado del ejemplo sería:

(object) array(
   'name' => 'ElePHPant ElePHPantsdotter',
   'website' => 'https://php.net/elephpant.php',
)

Ejemplo #3 Exportar clases

<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>

El resultado del ejemplo sería:

\A::__set_state(array(
   'var' => 5,
))

Ejemplo #4 Uso de __set_state

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

El resultado del ejemplo sería:

object(A)#2 (2) {
    ["var1"]=>
    int(5)
    ["var2"]=>
    string(3) "foo"
}

Notas

Nota:

Las variables de tipo recurso no pueden ser exportadas por esta función.

Nota:

var_export() no maneja referencias circulares ya que sería imposible generar código PHP analizable para este tipo de datos. Si se desea hacer algo con la representación completa de un array o un objeto, se debe utilizar la función serialize().

Advertencia

Anterior a PHP 8.2.0, cuando var_export() exportaba objetos, la barra invertida inicial no era incluida en el espacio de nombres de la clase y esto, para un máximo de compatibilidad.

Nota:

Para poder evaluar el PHP generado por var_export(), todos los objetos analizados deben implementar el método mágico __set_state. La única excepción es stdClass; que es exportada utilizando un cast de un tableau a un objeto.

Ver también

  • print_r() - Muestra información legible para una variable
  • serialize() - Genera una representación almacenable de un valor
  • var_dump() - Muestra información sobre una variable