var_dump()
A função var_dump() exibe informações estruturadas sobre uma variável em PHP, incluindo seu tipo e valor. Saiba como usá-la.
Introdução
var_dump() é uma função de depuração embutida do PHP que exibe informações estruturadas sobre uma ou mais variáveis — incluindo o tipo, comprimento e conteúdo de cada valor — diretamente na saída. Diferente do echo, que apenas imprime um valor, var_dump() mostra exatamente que tipo de valor você está analisando, tornando-a a forma mais rápida de responder "por que isso não está funcionando?" durante o desenvolvimento.
Esta página aborda a sintaxe, como cada tipo PHP é renderizado, como trabalhar com arrays e objetos, como ela difere de funções relacionadas como print_r() e var_export(), e os problemas a observar.
Sintaxe
var_dump(mixed $value, mixed ...$values): void$value— a variável ou expressão a inspecionar....$values— qualquer número de valores adicionais; cada um é exibido na ordem.- Valor de retorno: nenhum (
void).var_dump()escreve diretamente na saída e não retorna nada para atribuir.
Exemplo básico
Aqui $var1 é um inteiro, $var2 uma string e $array um array. A saída exibe o tipo e o valor de cada um:
int(10)
string(13) "Hello, world!"
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "cherry"
}Leia a saída com atenção — há mais detalhes do que echo forneceria:
int(10)— o valor é o inteiro10.string(13) "Hello, world!"— uma string com 13 bytes de comprimento. Ver o comprimento é útil para identificar espaços ocultos ou problemas de codificação.- Para o array, cada linha
[key]=>mostra a chave e, em seguida, o tipo e o valor do elemento abaixo dela.
Como cada tipo é renderizado
var_dump() formata cada tipo escalar de forma diferente, o que a torna mais informativa do que simplesmente imprimir um valor. A tabela resume a notação:
| Tipo PHP | Exemplo de saída |
|---|---|
| integer | int(42) |
| float | float(3.14) |
| string | string(5) "hello" |
| boolean | bool(true) |
| null | NULL |
| array | array(2) { ... } |
| object | object(ClassName)#1 (2) { ... } |
Os casos boolean e NULL são os mais úteis para desenvolvedores. echo true imprime 1 e echo false / echo null não imprimem nada, tornando impossível distinguir false, null e "" com echo — mas var_dump() os mostra claramente:
<?php
var_dump(true);
var_dump(false);
var_dump(null);
var_dump("");
var_dump(0);
var_dump("0");
?>bool(true)
bool(false)
NULL
string(0) ""
int(0)
string(1) "0"Observe como var_dump() distingue o inteiro 0 da string "0" — uma distinção que silenciosamente causa bugs em comparações sem tipo estrito. Veja PHP Data Types e gettype() para mais informações sobre verificação de tipos.
Inspecionando objetos e estruturas aninhadas
var_dump() percorre objetos e arrays aninhados recursivamente, exibindo a visibilidade (public / protected / private) de cada propriedade:
<?php
class User {
public string $name = "Ada";
protected int $age = 36;
private array $roles = ["admin", "editor"];
}
var_dump(new User());
?>object(User)#1 (3) {
["name"]=>
string(3) "Ada"
["age":protected]=>
int(36)
["roles":"User":private]=>
array(2) {
[0]=>
string(5) "admin"
[1]=>
string(6) "editor"
}
}O #1 é o id interno da instância do objeto e (3) é o número de propriedades.
Inspecionando múltiplos valores de uma vez
Como var_dump() é variádica, você pode inspecionar várias variáveis em uma única chamada em vez de escrever uma linha por variável:
<?php
$id = 7;
$name = "Grace";
$active = true;
var_dump($id, $name, $active);
?>int(7)
string(5) "Grace"
bool(true)var_dump() vs. print_r() vs. var_export()
Essas três funções se sobrepõem, por isso escolher a certa é importante:
| Função | Exibe tipos? | Saída é PHP válido? | Melhor para |
|---|---|---|---|
var_dump() | Sim | Não | Depuração — máximo de detalhes |
print_r() | Não | Não | Uma visão legível e amigável |
var_export() | Não | Sim | Geração de código / dumps de configuração |
Use var_dump() quando precisar ver tipos e comprimentos exatos. Recorra a print_r() quando quiser uma visualização rápida e menos detalhada da estrutura de um array, e a var_export() quando quiser uma saída que possa ser colada de volta no código-fonte.
Capturando a saída como string
var_dump() não retorna nada, portanto não é possível fazer $x = var_dump($y). Para capturar sua saída (para fins de log, por exemplo), envolva-a em buffer de saída:
<?php
$data = ["status" => 200, "ok" => true];
ob_start();
var_dump($data);
$dump = ob_get_clean();
// $dump now holds the var_dump output as a string
echo strlen($dump) . " characters captured\n";
?>Notas e pontos de atenção
- Destino da saída.
var_dump()escreve na saída padrão. Ao executar em um navegador, o PHP moderno envolve o dump em tags<pre>para que a estrutura seja legível; na CLI, imprime texto simples. - Dumps esquecidos chegam à produção. Um
var_dump()perdido no código irá vazar dados internos para os usuários. Remova os dumps de depuração antes de implantar ou proteja-os por trás de uma flag de debug. - Strings exibem comprimento em bytes, não em caracteres.
string(13)conta bytes; uma string multibyte (UTF-8) pode reportar um número maior do que a contagem de caracteres visíveis. - Use Xdebug para uma saída mais legível. Com a extensão Xdebug instalada,
var_dump()é automaticamente substituída para produzir uma saída com cores e profundidade limitada, muito mais fácil de analisar.
Conclusão
var_dump() é a função ideal para inspecionar o que um valor realmente é durante o desenvolvimento em PHP. Ela revela tipo, comprimento, estrutura e visibilidade em uma única chamada — detalhes que echo ou print simples escondem. Recorra a print_r() quando quiser uma leitura mais limpa de um array e a var_export() quando precisar de código PHP reutilizável, mas para depuração bruta var_dump() é difícil de superar.