Zum Hauptinhalt springen

Was ist der Dumpable-Trait?

Illuminate\Support\Traits\Dumpable ist ein kleiner Trait, der beliebige Klassen um dump() und dd() erweitert. Er wurde in Laravel 10 eingeführt und wird in Laravel-Kernklassen wie Collection, Eloquent Builder und Request breit eingesetzt, um ein einheitliches Debugging-Erlebnis zu schaffen. Das Ziel ist einfach: Objekte wie mit var_dump prüfen und die Ausführung bei Bedarf sofort anhalten können.

Die Implementierung ansehen

Die Implementierung ist denkbar einfach: Sie ruft lediglich dump($this, ...$args) und dd($this, ...$args) auf.
trait Dumpable
{
    public function dump(...$args): static
    {
        dump($this, ...$args);
        return $this;
    }

    public function dd(...$args): never
    {
        dd($this, ...$args);
    }
}
Die Implementierung in Laravel 13 finden Sie unter src/Illuminate/Support/Traits/Dumpable.php. Die tatsächlichen Signaturen drücken über PHPDoc @return $this bzw. @return never aus.

In eigenen Klassen verwenden

Fügen Sie einfach use Dumpable; hinzu, und schon stehen Ihnen dump() und dd() als Instanzmethoden zur Verfügung.
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(); // Ausgabe und Fortsetzen
$user->dd();   // Ausgabe und Beenden

Debugging in Method-Chains einfügen

Da dump() static (in der Implementierung $this) zurückgibt, können Sie es sicher mitten in einer Method-Chain verwenden.
$result = collect([1, 2, 3])
    ->map(fn ($n) => $n * 2)
    ->dump()  // hier den Inhalt prüfen
    ->filter(fn ($n) => $n > 2)
    ->values();
Ersetzen Sie es durch dd(), stoppt die Ausführung an dieser Stelle — hilfreich, wenn Sie den Zustand vor rechenintensiver Folgeverarbeitung prüfen möchten.

Einsatz in der Paketentwicklung

Wenn Sie in eigene Value Objects, DTOs oder Builder Dumpable einbauen, können Ihre Nutzer den Zustand ohne zusätzliche Werkzeuge prüfen.
1

In Value Object / DTO einfügen

use Illuminate\Support\Traits\Dumpable;

final class InvoiceData
{
    use Dumpable;

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

Mitten im Fluent Builder prüfen

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

Zusätzliche Argumente übergeben

Da Dumpable intern dump($this, ...$args) bzw. dd($this, ...$args) aufruft, können Sie kontextuelle Informationen mit ausgeben.
$user->dump('Debug-Punkt A');
// $this und 'Debug-Punkt A' werden gemeinsam ausgegeben
Das ist besonders nützlich, wenn Sie dump() an mehreren Stellen einsetzen — Sie erkennen sofort, an welchem Punkt die Ausgabe erfolgt ist.

Verwandte Traits

tap()-Helper / Tappable

Lernen Sie das Muster kennen, mit dem Sie Nebenwirkungen einfügen und dennoch den Wert zurückgeben.

Conditionable-Trait

Lernen Sie ein Design kennen, das Method-Chains bedingt verzweigt.

Macroable-Trait

Lernen Sie, wie Sie bestehende Klassen um eigene Methoden erweitern.
Zuletzt geändert am 13. Juli 2026