Passer au contenu principal

Qu’est-ce que le trait Dumpable

Illuminate\Support\Traits\Dumpable est un petit trait qui ajoute dump() et dd() à n’importe quelle classe. Introduit dans Laravel 10, il est largement utilisé au sein du cœur de Laravel (Collection, Eloquent Builder, Request, etc.) pour uniformiser l’expérience de débogage. L’objectif est simple : inspecter un objet à la manière de var_dump et, si besoin, arrêter le traitement sur place.

Vérifier l’implémentation

L’implémentation est très simple : elle se contente d’appeler dump($this, ...$args) et dd($this, ...$args).
trait Dumpable
{
    public function dump(...$args): static
    {
        dump($this, ...$args);
        return $this;
    }

    public function dd(...$args): never
    {
        dd($this, ...$args);
    }
}
L’implémentation Laravel 13 se trouve dans src/Illuminate/Support/Traits/Dumpable.php. Les signatures réelles expriment @return $this et @return never en PHPDoc.

Utilisation dans votre propre classe

En ajoutant simplement use Dumpable;, vous obtenez dump() / dd() comme méthodes d’instance.
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(); // dump et poursuit
$user->dd();   // dump et arrête

Insérer un debug au milieu d’une chaîne

Comme dump() retourne static (en pratique $this), vous pouvez l’utiliser sans risque au milieu d’une chaîne de méthodes.
$result = collect([1, 2, 3])
    ->map(fn ($n) => $n * 2)
    ->dump()  // Vérifier le contenu ici
    ->filter(fn ($n) => $n > 2)
    ->values();
En remplaçant par dd(), le traitement s’arrête à ce point : pratique lorsque vous voulez inspecter l’état avant un traitement lourd qui suit.

Utilisation dans le développement de packages

Inclure Dumpable dans vos Value Objects, DTO ou Builders permet à vos utilisateurs d’inspecter l’état sans outil supplémentaire.
1

Ajouter à 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

Vérifier au milieu d'un Fluent Builder

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

Passer des arguments supplémentaires

Comme Dumpable appelle en interne dump($this, ...$args) / dd($this, ...$args), vous pouvez afficher des informations de contexte en même temps.
$user->dump('Point de debug A');
// $this et 'Point de debug A' sont affichés ensemble
Utile lorsque vous utilisez dump() à plusieurs endroits. Vous identifiez immédiatement d’où provient chaque sortie.

Traits associés

Helper tap() / Tappable

Découvrez le pattern qui insère un effet de bord tout en retournant la valeur.

Trait Conditionable

Apprenez à concevoir des chaînes conditionnelles.

Trait Macroable

Étendez des classes existantes avec vos propres méthodes.
Dernière modification le 13 juillet 2026