什么是 Dumpable trait
Illuminate\Support\Traits\Dumpable 是一个用于向任意类添加 dump() 与 dd() 的小 trait。它在 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() 时非常有用,可以一眼看清是哪一处输出的。
相关 trait
tap() 辅助函数 / Tappable
了解「插入副作用同时返回值」的模式。
Conditionable trait
了解在链式处理中按条件分支的设计方法。
Macroable trait
了解如何扩展既有类,添加自定义方法。