Dumpable 트레이트란
Illuminate\Support\Traits\Dumpable은 임의의 클래스에 dump()와 dd()를 추가하기 위한 작은 트레이트입니다. Laravel 10에서 도입되었고, Collection·Eloquent Builder·Request 등 Laravel 코어의 디버깅 경험을 통일하기 위해 널리 사용되고 있습니다.
목적은 단순합니다. 오브젝트를 var_dump 상당으로 확인하면서, 필요하다면 그 자리에서 처리를 중단하는 것입니다.
구현 확인하기
구현은 매우 단순해서dump($this, ...$args)와 dd($this, ...$args)를 호출할 뿐입니다.
Laravel 13의 구현은
src/Illuminate/Support/Traits/Dumpable.php에 있습니다. 실제 시그니처는 PHPDoc으로 @return $this와 @return never를 표현하고 있습니다.자체 클래스에서 사용하기
use Dumpable;을 추가하는 것만으로, 인스턴스 메서드로서 dump() / dd()를 사용할 수 있습니다.
체인 중간에 디버그 끼워 넣기
dump()는 static(구현상 $this)을 반환하므로, 메서드 체인 도중에 안전하게 사용할 수 있습니다.
dd()로 바꾸면 그 지점에서 처리가 멈추므로, 무거운 후속 처리 이전에 상태를 확인하고 싶을 때 편리합니다.
패키지 개발에서의 활용
자체 Value Object·DTO·Builder에Dumpable을 넣어 두면, 사용자가 추가 도구 없이도 상태를 확인할 수 있습니다.
추가 인수 전달하기
Dumpable은 내부에서 dump($this, ...$args) / dd($this, ...$args)를 호출하므로, 문맥 정보를 함께 출력할 수 있습니다.
dump()를 사용할 때 유용합니다. 어느 지점에서 출력되었는지 즉시 판별할 수 있습니다.
관련 트레이트
tap() 헬퍼 / Tappable
부수 효과를 끼워 넣으면서 값을 반환하는 패턴을 배웁니다.
Conditionable 트레이트
조건부로 체인 처리를 분기하는 설계를 배웁니다.
Macroable 트레이트
기존 클래스를 확장하여 고유 메서드를 추가하는 방법을 배웁니다.