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ão Descriçã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

Example #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

Example #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',
)

Example #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,
))

Example #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(
                                            //    'var1' => 5,
                                            //    'var2' => 'foo',
                                            // ));
var_dump($b);
?>

O exemplo acima produzirá:

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

Notas

Note:

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

Note:

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().

Warning

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.

Note:

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