var_export()
A função var_export() do PHP gera uma representação em código PHP válido de uma variável, útil para cache e depuração.
Introdução
var_export() é uma função nativa do PHP que produz uma representação em código PHP válido de uma variável. Diferentemente de um simples print, a string retornada é analisável: você pode copiá-la de volta para um arquivo .php (ou passá-la para eval()) e obter um valor idêntico. Isso a torna ideal para:
- Gerar arquivos de configuração ou dados em cache — grave o export no disco e use
requiredepois. - Inspecionar a estrutura exata de uma variável durante a depuração.
- Capturar valores esperados em testes e documentação.
Esta página cobre a sintaxe, o parâmetro $return, como cada tipo de dado é renderizado, e como var_export() difere de var_dump() e print_r().
Sintaxe
var_export(mixed $value, bool $return = false): ?string| Parâmetro | Descrição |
|---|---|
$value | A variável ou expressão a exportar. |
$return | Quando false (padrão), a representação é impressa diretamente e a função retorna null. Quando true, a representação é retornada como string em vez de ser impressa. |
O erro mais comum é esquecer o segundo argumento: $result = var_export($x); deixa $result como null porque a saída foi diretamente para stdout. Para capturá-la, passe true.
Exemplo básico
Aqui $var1 é um inteiro, $var2 uma string e $array um array indexado. Cada chamada retorna uma string que é ela própria PHP válido:
10
'Hello, world!'
array (
0 => 'apple',
1 => 'banana',
2 => 'cherry',
)Observe que strings são envolvidas em aspas simples e arrays mantêm suas chaves explícitas — a saída de um array poderia ser atribuída diretamente a uma variável.
Como cada tipo é renderizado
<?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";
?>Saída:
true
NULL
3.14
'a'
array (
'name' => 'Ann',
'age' => 30,
)Booleanos se tornam true/false, null se torna o NULL em maiúsculas, e arrays associativos preservam suas chaves string — tudo PHP sintaticamente válido.
Exportando objetos
Para objetos, var_export() emite uma chamada __set_state() para que a estrutura possa, em princípio, ser reconstruída:
<?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 tal objeto a partir do export, a classe deve definir um método estático __set_state(). Sem ele, avaliar a saída gera um erro — portanto, para serializar e desserializar objetos, serialize() geralmente é uma opção melhor.
var_export() vs. var_dump() vs. print_r()
| Função | Formato de saída | Mostra tipos? | Retornável como string? | PHP válido? |
|---|---|---|---|---|
var_export() | Código PHP analisável | Implicitamente | Sim ($return = true) | Sim |
var_dump() | Tipo + valor + comprimento | Sim (explícito) | Não (apenas imprime) | Não |
print_r() | Árvore legível por humanos | Não | Sim (2º argumento) | Não |
Use var_export() quando precisar de código que possa ser armazenado ou re-executado, var_dump() quando precisar de tipos e comprimentos de strings para depuração, e print_r() para uma visualização rápida e legível.
Um uso prático: arquivos de dados em cache
Como o export é PHP válido, você pode persistir dados computados e carregá-los rapidamente na próxima requisição:
<?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 é idêntico ao array $config original — sem necessidade de analisar JSON ou desserializar.
Conclusão
var_export() transforma uma variável em código PHP pronto para execução. Passe $return = true para capturar esse código como string, lembre-se que null é impresso como NULL e strings usam aspas simples, e opte por serialize() quando precisar serializar objetos. Para depuração com informação de tipos, compare com var_dump() e print_r().