什麼是 Dumpable trait
Illuminate\Support\Traits\Dumpable 是一個為任意類別加入 dump() 與 dd() 的小巧 trait。於 Laravel 10 引入,Collection、Eloquent Builder、Request 等 Laravel Core 中都廣泛使用它,用於統一除錯體驗。
目的很簡單。以類似 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() helper / Tappable
學習在插入副作用同時回傳值的模式。
Conditionable trait
學習有條件地分支鏈式處理的設計。
Macroable trait
學習擴充既有類別以加入自訂方法的方法。