var_export

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

var_exportMostra ou retorna uma representação string analisável de uma variável

Descrição

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

var_export() obtém informação estruturada sobre a variável informada. Ela é similar a var_dump() com uma exceção: a representação retornada é um código PHP válido.

Parâmetros

value

A variável a ser exportada.

return

Se usado e definido para true, var_export() irá retornar a representação da variável ao invés de exibí-la.

Valor Retornado

Retorna a representação da variável quando o parâmetro return é usado e avaliado para true. Caso contrário, esta função retornará null.

Registro de Alterações

VersãoDescrição
8.2.0 Nomes de classe exportados agora são completamente qualificadas; anteriormente, a barra invertida no início era omitida.
7.3.0 Agora exporta objetos stdClass como um array convertido para um objeto ((object) array( ... )), ao invés de usar o método inexistente stdClass::__setState(). O efeito prático é que agora stdClass é exportável e o código resultante funcionará até mesmo em versões anteriores do PHP.

Exemplos

Exemplo #1 Exemplos de var_export()

<?php
$a
= array (1, 2, array ("a", "b", "c"));
var_export($a);
?>

O exemplo acima produzirá:

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

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

?>

O exemplo acima produzirá:

3.1

Exemplo #2 Exportando stdClass (a partir do PHP 7.3.0)

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

var_export($person);

O exemplo acima produzirá:

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

Exemplo #3 Exportando classes

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

O exemplo acima produzirá:

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

Exemplo #4 Usando __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(

O exemplo acima produzirá:

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

Notas

Nota:

Variáveis do tipo resource não podem ser exportadas por esta função.

Nota:

var_export() não lida com referência circular já que seria praticamente impossível gerar código PHP analisável para isto. Se for desejado fazer algo com a representação completa de um array ou objeto, use serialize().

Aviso

Antes do PHP 8.2.0, quando var_export() exporta objetos, a barra inicial no início não é incluída no nome de classes com namespace para máxima compatibilidade.

Nota:

Para ser possível avaliar o código PHP gerado por var_export(), todos os objetos processados devem implementar o método mágico __set_state. A única exceção é stdClass, que é exportada usando um array convertido para um objeto.

Veja Também

  • print_r() - Exibe informação legível sobre uma variável
  • serialize() - Gera uma representação armazenável de um valor
  • var_dump() - Despeja na saída informações sobre uma variável
To Top