Supongo que al igual que yo muchos programadores de PHP utilizan printr para ver el contenido de los arrays o vardump para comprobar el tipo de las variables que el pasamos, ya sea objetos, arrays, strings, etcétera.

Si por ejemplo cogiéramos la clase de Super Mario y la pasáramos por var_dump así:

<?php 
class Mario { 

    //ATRIBUTOS 
    //Los atributos de Mario, como su tamaño, o si se ha comido o no una flor. 
    private $_tam = 0; //Tamaño por defecto, será 0 si es pequeño y 1 si Mario es grande. 
    private $_flor = false; //Por defecto no se ha comido ninguna flor. 

    //MÉTODOS 
    //Método para que el personaje salte 
    public function saltar(){ 
        echo "Estoy Saltando!!"; 
    } 

    //Método para lanzar bolas de fuego 
    public function dispararFuego(){ 
        if($this->_flor){ 
            echo "Toma bola de fuego y muere!!!!!!"; 
        }else{ 
            echo "No puedo disparar sin comerme una flor!"; 
        } 
    } 

    //Método para comer una flor 
    public function comerFlor(){ 
        $this->_flor = true; 
    } 

    //Método para comer una seta 
    public function comerSeta(){ 
        $this->_tam = 1; 
    } 

    //Metodo para cuando nos golpean 
    public function recibirGolpe(){ 
        if($this->_tam == 1){ 
            $this->_flor = false; 
            $this->_tam = 0; 
        }else{ 
            $this->_die(); 
        } 
    } 

    //Método que mata a mario 
    private function _die(){ 
        echo "Estoy muerto"; 
    } 
}

var_dump(new Mario()); 
?>

Nos mostraría esto: “object(Mario)#1 (2) { ["_tam":"Mario":private]=> int(0) ["_flor":"Mario":private]=> bool(false) }”.

Como puedes ver una devuelve una cadena de texto con nombre y tipos de datos de sus atributos y métodos, es suficiente para debuggear, pero a primera vista algo lioso. ¿Se puede mejorar? Si.

LadyBug es una librería creada por Raúl Fraile que hace las veces de var_dump aportando un análisis detallado de los parámetros pasados en un formato visual más elegante, si pasamos la clase Mario por LadyBug nos muestra esto:

LadyBug

Mucho mejor ¿verdad?, no solo nos da información detallada de objetos, si no de cualquier tipo de dato, sean imagenes, arrays, instancias de bases de datos, ficheros, etcétera.

La forma de usarlo es bastante simple, en su documentación nos aconseja instalar LadyBug mediante Composer, personalmente nunca había usado composer y me ha sorprendido lo simple que ha resultado la instalación mediante el. Una vez instalado solo debemos de incluir la librería en nuestro script y pasar nuestros datos por ladybugdump (*ld en su versión corta*) o ladybugdump_die (ldd en su versión corta) para parar la ejecución del script una vez se ejecute LadyBug.

No veo necesario explicar mucho más sobre esta librería porqué en su repositorio de GitHub viene todo espléndidamente detallado, así que para terminar os dejo el código de la clase Mario pasado por LadyBug a modo de ejemplo y os aconsejo que miréis en el directorio /examples de la librería para ver todo su potencial.

<?php 
require_once __DIR__.'/../vendor/autoload.php';
Ladybug\Loader::loadHelpers(); 

class Mario { 

    //ATRIBUTOS 
    //Los atributos de Mario, como su tamaño, o si se ha comido o no una flor. 
    private $_tam = 0; //Tamaño por defecto, será 0 si es pequeño y 1 si Mario es grande. 
    private $_flor = false; //Por defecto no se ha comido ninguna flor. 

    //MÉTODOS 
    //Mertodo para que el personaje salte 
    public function saltar(){ 
        echo "Estoy Saltando!!"; 
    } 

    //Metodo para lanzar bolas de fuego 
    public function dispararFuego(){ 
        if($this->_flor){ 
            echo "Toma bola de fuego y muere!!!!!!"; 
        }else{ 
            echo "No puedo disparar sin comerme una flor!"; 
        } 
    } 

    //Metodo para comer una flor 
    public function comerFlor(){ 
        $this->_flor = true; 
    } 

    //Metodo para comer una seta 
    public function comerSeta(){ 
        $this->_tam = 1; 
    } 

    //Metodo para cuando nos golpean 
    public function recibirGolpe(){ 
        if($this->_tam == 1){ 
            $this->_flor = false; 
            $this->_tam = 0; 
        }else{ 
            $this->_die(); 
        } 
    } 

    //Metodo que mata a mario 
    private function _die(){ 
        echo "Estoy muerto"; 
    } 
} 

ld(new Mario()); 
?>

Repositorio de LadyBug: https://github.com/raulfraile/Ladybug/