(PHP 4 >= 4.2.0, PHP 5)
var_export — Imprime o devuelve una representación string de una variable analizable
var_export() obtiene información estructurada sobre la variable dada. Es similar a la función var_dump() con una excepción: la representación devuelta es código PHP válido.
expression
La variable que desea exportar.
return
Si es usada y se define como TRUE
, var_export() devolverá
la representación de la variable en lugar de imprimirla.
Devuelve la representación de la variable cuando el parámetro return
es utilizado y evaluado como TRUE
. En caso contrario, esta función
devolverá NULL
.
Nota:
Cuando el parámetro
return
se usa, esta función utiliza el almacenamiento en búfer de salida interno, por lo que no puede usarse dentro de una función de llamada de retorno ob_start().
Versión | Descripción |
---|---|
5.1.0 | Posibilidad de exportar las clases y los arrays que contienen las clases utilizando el método mágico __set_state. |
Ejemplo #1 Ejemplos de 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;
?>
El resultado del ejemplo sería:
3.1
Ejemplo #2 Exportación de clases a partir de PHP 5.1.0
<?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 #3 Uso de __set_state (a partir de PHP 5.1.0)
<?php
class A
{
public $var1;
public $var2;
public static function __set_state($una_matriz)
{
$obj = new A;
$obj->var1 = $una_matriz['var1'];
$obj->var2 = $una_matriz['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" }
Nota:
Las variables de tipo resource no pueden ser exportadas por esta función.
Nota:
var_export() no maneja referencias circulares ya que sería prácticamente imposible generar código PHP interpretable en tal caso. Si desea trabajar con la representación completa de una matriz u objeto, use serialize().
Cuando var_export() exporta objectos, la barra diagonal no se incluye en el nombre de clases que pertencen a un namespace para mantener compatibilidad.