Saltar al contenido principal

Qué es el trait Dumpable

Illuminate\Support\Traits\Dumpable es un pequeño trait que añade dump() y dd() a cualquier clase. Se introdujo en Laravel 10 y se usa en Collection, Eloquent Builder, Request y muchas otras clases del core de Laravel para unificar la experiencia de depuración. Su propósito es sencillo: inspeccionar objetos con algo equivalente a var_dump y, si hace falta, detener la ejecución en ese punto.

Revisar la implementación

La implementación es muy sencilla: simplemente llama a dump($this, ...$args) y dd($this, ...$args).
trait Dumpable
{
    public function dump(...$args): static
    {
        dump($this, ...$args);
        return $this;
    }

    public function dd(...$args): never
    {
        dd($this, ...$args);
    }
}
La implementación en Laravel 13 está en src/Illuminate/Support/Traits/Dumpable.php. La firma real declara @return $this y @return never mediante PHPDoc.

Usarlo en tus propias clases

Basta con añadir use Dumpable; para tener disponibles dump() / dd() como métodos de instancia.
use Illuminate\Support\Traits\Dumpable;

class UserData
{
    use Dumpable;
    
    public function __construct(
        public readonly string $name,
        public readonly string $email,
    ) {}
}

$user = new UserData('Taro', '[email protected]');

$user->dump(); // hace dump y continúa
$user->dd();   // hace dump y termina

Depurar en medio de una cadena

Como dump() devuelve static (en la práctica, $this), se puede usar con seguridad en el medio de un method chain.
$result = collect([1, 2, 3])
    ->map(fn ($n) => $n * 2)
    ->dump()  // aquí inspeccionas el contenido
    ->filter(fn ($n) => $n > 2)
    ->values();
Si lo cambias por dd(), la ejecución se detiene en ese punto, lo cual es útil cuando quieres inspeccionar el estado antes de un procesamiento posterior pesado.

Uso en el desarrollo de paquetes

Si añades Dumpable a tus Value Objects, DTOs o Builders, tus usuarios podrán inspeccionar el estado sin necesidad de herramientas adicionales.
1

Añádelo a un Value Object / DTO

use Illuminate\Support\Traits\Dumpable;

final class InvoiceData
{
    use Dumpable;

    public function __construct(
        public readonly string $number,
        public readonly int $total,
    ) {}
}
2

Inspecciona en medio de un Fluent Builder

$payload = (new PackageRequestBuilder)
    ->forUser($userId)
    ->withLocale('es')
    ->dump('before send')
    ->toArray();

Pasar argumentos adicionales

Como Dumpable internamente llama a dump($this, ...$args) / dd($this, ...$args), puedes imprimir información contextual junto al objeto.
$user->dump('Punto de depuración A');
// Muestra $this y 'Punto de depuración A' a la vez
Es muy útil cuando usas dump() en varios sitios: identificas rápidamente en qué punto se produjo cada salida.

Traits relacionados

Helper tap() / Tappable

Aprende el patrón que intercala efectos colaterales devolviendo el valor.

Trait Conditionable

Aprende cómo diseñar bifurcaciones condicionales manteniendo el encadenamiento.

Trait Macroable

Aprende cómo extender clases existentes para añadirles métodos propios.
Última modificación el 13 de julio de 2026