Dump de Entidade Doctrine

Bom dia pessoal!

Com frequência, principalmente durante o desenvolvimento, precisamos verificar o estado de uma entidade do Doctrine, e fui perguntado recentemente sobre como fazer isso sem “travar” o browser pelo uso do var_dump. Então aí vão algumas dicas.

O var_dump do php exporta todo o objeto e com isso vem um array gigantesco com coisas internas do doctrine que fazem parte das entidades e que você normalmente não “vê” e muitas vezes travam o browser ou acabam com a memória do computador.

Mas então como dar um “dump” de uma entidade? Aí que entra o Dump do próprio Doctrine.

Doctrine\Common\Util\Debug

Esta classe nos fornece uma função estática justamente para gerar um dump da entidade, mas apenas das propriedades definidas pelo programador, sem as coisas internas do Doctrine.

A chamada é muito simples:

Mas apresenta um inconveniente se usar em HTML onde a saída é um array todo numa linha só, sem escarpamento HTML, e isso dificulta a visualização dos dados.

Para isso vamos alterar o comando um pouco:

Pronto, agora a saída é um array formatado para HTML.

Mas ficar escrevendo este comando, mesmo com Copy/Paste, é desnecessário. Entra a EntityLogger do LosLog.

LosLog\Log\EntityLogger

Para quem ainda não conhece, disponibilizei no Github e Packagist um módulo para ZF2 com várias classes que costumava usar em meus projetos. Existe um post aqui no blog sobre ele. Para fazer a instalação no seu projeto basta usar o composer:

Na última versão 1.0.10 criei uma função estática para facilitar o dump:

Por padrão ele gera o dump para HTML e com profundidade de 1, mostrando apenas as propriedades próprias da entidade. Se quiser mostrar também as associações para outras entidades, basta passar a nova profundidade no segundo argumento:

E não tem limite para a profundidade:

Mas tome cuidado, pois se usar uma profundidade muito alta, vai acabar tendo o mesmo problema do var_dump padrão.

Se estiver usando o dump no console, passe false no terceiro argumento, que fará a saída ser gerada sem os códigos HTML:

Espero que seja útil para todos e até a próxima!

Leandro Silva

PHP developer since 1997, loves movies, music and dogs.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*