- カテゴリ: collection
 - 掲載バージョン: Laravel 12・PHP 8.4
 - 名前空間 / FQCN / コマンド: 
Illuminate\Support\Collection::dump - 関連: 
Collection::dd/dump(ヘルパ)/Collection::tap/Collection::each/LazyCollection - 変更履歴: ー
 
要点(TL;DR)
- デバッグ用に中身を表示しつつ処理は続行したいときに使う
 collect($items)->dump()- 罠: 本番への混入/LazyCollectionが全件評価されメモリ急増/キュー内は表示されにくい
 
概要
dump() はコレクションの内容を開発者向けに出力し、スクリプトを止めずに後続のチェーンを継続させます。dd()(Dump and Die)との違いは、dd()は出力後に即終了する点です。Eloquent の結果や配列加工の途中で値を確認したいときに最短で使えます。Laravel のコレクションと LazyCollection の両方で利用できます。(Readouble, Laravel)
構文 / シグネチャ
// Illuminate\Support\Collection
public function dump(): static
- 引数(表) 引数 型 必須 既定値 説明 なし — — — コレクションの内容を出力
 - 戻り値:
static(同一インスタンスを返すため、チェーン継続可)(Laravel API) - 例外/副作用:標準出力/HTTPレスポンスにデバッグ出力(VarDumper)。本番レスポンスやAPI JSONに混入しうる。キュージョブ内では出力が見えないことがある(Herd “Dumps” や dump-server などの捕捉機能を利用)。(Laravel Herd, Beyond Code)
 
使用例
最小例
<?php
use Illuminate\Support\Collection;
$numbers = collect([1, 2, 3])
    ->dump()               // [1, 2, 3] を出力。以降も続く
    ->map(fn ($v) => $v * 2)
    ->all();               // [2, 4, 6]
実務例(Eloquentの結果確認)
<?php
use App\Models\User;
$emails = User::query()
    ->where('active', true)
    ->orderByDesc('last_login_at')
    ->limit(20)
    ->get()
    ->pluck('email')
    ->dump()        // 取得した20件のemailを出力して処理は継続
    ->take(5)       // 表示確認後、上位5件を使う
    ->all();
よくある落とし穴・注意
- 本番に混入:レスポンスに生出力されるため、本番コードに残さない。
 - LazyCollectionでの評価:
dump()は中身を表示するために全件評価され、巨大データではメモリ/時間が増大する。必要なら->take(5)->each(fn($x) => dump($x))のように一部だけ列挙して確認する。LazyCollectionでもdump/ddが使えるが、Enumerable 契約に基づくため評価タイミングに注意。(Laravel) - 出力先問題(キュー/CLI):ジョブ内の 
dump()は見えないことがある。Laravel Herd の「Dumps」や beyondcode/laravel-dump-server などの仕組みでダンプを捕捉する。(Laravel Herd, Beyond Code) 
代替・関連APIとの比較
| 手段 | 止まる | チェーン内で使える | 用途 | 
|---|---|---|---|
Collection::dump() | いいえ | はい | 中身を見て続行 | 
Collection::dd() | はい | はい | その場で停止して確認 | 
グローバル dump($var) | いいえ | ー | 変数なら何でも。配列/モデルなど汎用 | 
tap() | いいえ | はい | 任意の処理(logger()等)を差し込み、出力を避けたい時 | 
補足:Laravel 11 以降は
Dumpable/EnumeratesValues等により、多くのクラスでdump/ddが利用可能。(Laravel API, アミット・マーチャントブログ)
テスト例(Pest)
<?php
use Illuminate\Support\Collection;
it('returns same instance and keeps chaining', function () {
    $c = collect([1, 2, 3]);
    $r = $c->dump(); // 出力はされるがテストは継続
    expect($r)->toBeInstanceOf(Collection::class)
              ->and($r)->toBe($c)
              ->and($r->map(fn ($v) => $v * 2)->all())->toEqual([2, 4, 6]);
});
トラブルシュート(エラー別)
| 症状/エラー | 原因 | 対処 | 
|---|---|---|
Call to undefined method dump() | 配列に対して呼んでいる | collect($array)->dump() またはグローバル dump($array) を使う | 
| APIレスポンスが壊れる / HTMLが混入 | dump()の出力がJSON/HTMLに混ざった | 本番では削除。ローカルは tap() + logger() など出力しない検証に切替 | 
| ジョブ内で何も表示されない | 出力先がターミナル/ブラウザに紐付かない | Laravel HerdのDumpsやdump-serverでダンプ捕捉を有効化 (Laravel Herd, Beyond Code) | 
コレクション特性メモ
- チェーン可否:可(
staticを返す)(Laravel API) - 破壊的/非破壊:非破壊(内容は変更しない)
 - キー保持:保持(表示のみで変更なし)
 - LazyCollection:対応。ただし全件評価の可能性に注意(大規模データでは部分列挙で確認)。(Laravel)
 - 計算量の目安:表示対象件数を 
nとすると O(n)(LazyCollectionで全件評価されるとメモリも O(n)) 
入出力対応表(ミニ)
| 入力(例) | 呼び出し | 標準出力(抜粋) | 戻り値 | 
|---|---|---|---|
[1,2,3] | collect([1,2,3])->dump() | array:3 [0=>1,1=>2,2=>3] | 同一 Collection インスタンス | 
参考リンク
- Laravel Docs — Collections(Available Methods に 
dump/ddを含む): https://laravel.com/docs/12.x/collections (Laravel) - Readouble(Laravel 6, 
dump/ddの説明と例): https://readouble.com/laravel/6.x/en/collections.html (Readouble) - API Docs — EnumeratesValues::dump(戻り値 
$this): https://api.laravel.com/docs/9.x/Illuminate/Support/Traits/EnumeratesValues.html (Laravel API) - Laravel Herd — Debugging with Dumps: https://herd.laravel.com/docs/macos/debugging/dumps (Laravel Herd)
 - Beyond Code — laravel-dump-server: https://beyondco.de/docs/laravel-dump-server/usage (Beyond Code)
 

  
  
  
  