> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Dumpable-Trait

> Wie Sie mit Illuminate\Support\Traits\Dumpable beliebige Klassen um dump() / dd() erweitern und Debugging betreiben, ohne die Method-Chain zu unterbrechen.

## 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.

```mermaid theme={null}
flowchart TD
    A["dump()/dd() auf dem Objekt aufrufen"] --> B{"Welche Methode?"}
    B -- "dump()" --> C["$this und zusätzliche Argumente ausgeben"]
    C --> D["Ausführung fortsetzen"]
    B -- "dd()" --> E["$this und zusätzliche Argumente ausgeben"]
    E --> F["Ausführung beenden"]
```

## Die Implementierung ansehen

Die Implementierung ist denkbar einfach: Sie ruft lediglich `dump($this, ...$args)` und `dd($this, ...$args)` auf.

```php theme={null}
trait Dumpable
{
    public function dump(...$args): static
    {
        dump($this, ...$args);
        return $this;
    }

    public function dd(...$args): never
    {
        dd($this, ...$args);
    }
}
```

<Info>
  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.
</Info>

## In eigenen Klassen verwenden

Fügen Sie einfach `use Dumpable;` hinzu, und schon stehen Ihnen `dump()` und `dd()` als Instanzmethoden zur Verfügung.

```php theme={null}
use Illuminate\Support\Traits\Dumpable;

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

$user = new UserData('Taro', 'taro@example.com');

$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.

```php theme={null}
$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.

<Steps>
  <Step title="In Value Object / DTO einfügen">
    ```php theme={null}
    use Illuminate\Support\Traits\Dumpable;

    final class InvoiceData
    {
        use Dumpable;

        public function __construct(
            public readonly string $number,
            public readonly int $total,
        ) {}
    }
    ```
  </Step>

  <Step title="Mitten im Fluent Builder prüfen">
    ```php theme={null}
    $payload = (new PackageRequestBuilder)
        ->forUser($userId)
        ->withLocale('ja')
        ->dump('before send')
        ->toArray();
    ```
  </Step>
</Steps>

## Zusätzliche Argumente übergeben

Da `Dumpable` intern `dump($this, ...$args)` bzw. `dd($this, ...$args)` aufruft, können Sie kontextuelle Informationen mit ausgeben.

```php theme={null}
$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

<Columns cols={3}>
  <Card title="tap()-Helper / Tappable" icon="hand-point-up" href="/de/advanced/tap">
    Lernen Sie das Muster kennen, mit dem Sie Nebenwirkungen einfügen und dennoch den Wert zurückgeben.
  </Card>

  <Card title="Conditionable-Trait" icon="git-branch" href="/de/advanced/conditionable">
    Lernen Sie ein Design kennen, das Method-Chains bedingt verzweigt.
  </Card>

  <Card title="Macroable-Trait" icon="puzzle-piece" href="/de/advanced/macroable">
    Lernen Sie, wie Sie bestehende Klassen um eigene Methoden erweitern.
  </Card>
</Columns>


## Related topics

- [Support Contracts (Arrayable / Jsonable / Htmlable / Responsable)](/de/advanced/support-contracts.md)
- [Conditionable-Trait](/de/advanced/conditionable.md)
- [SessionEvent](/de/packages/laravel-copilot-sdk/session-event.md)
- [Macroable-Trait](/de/advanced/macroable.md)
- [Eloquent Bootable Traits](/de/advanced/eloquent-bootable-traits.md)
