跳转到主要内容

什么是 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,可以让使用者无需额外工具就能查看状态。
1

添加到 Value Object / DTO

2

在 Fluent Builder 的中间查看状态

传入额外参数

Dumpable 内部调用的是 dump($this, ...$args) / dd($this, ...$args),因此可以将上下文信息一起输出。
在多处使用 dump() 时非常有用,可以一眼看清是哪一处输出的。

相关 trait

tap() 辅助函数 / Tappable

了解「插入副作用同时返回值」的模式。

Conditionable trait

了解在链式处理中按条件分支的设计方法。

Macroable trait

了解如何扩展既有类,添加自定义方法。
最后修改于 2026年7月18日