dump — コレクションを出力して処理を継続

collection
  • カテゴリ: 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のDumpsdump-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 インスタンス

参考リンク

長野県・北アルプス地方在住のフリーランスWebプログラマー。
「落ち着くためのWeb開発」をテーマに、訪れる人が安心して使えるサービスづくりを心がけています。

LaravelやWordPressなどのWebアプリケーション開発を得意とし、技術面の安定性はもちろん、運用後も長く活用できる設計を大切にしています。
静かな山間の暮らしから生まれる視点で、シンプルかつ本質的な解決策をご提案します。

野鳥観察も趣味のひとつで、特にミソサザイ(Wren)に魅力を感じています。
小さな体に反して力強く上向きの尾羽、そして澄んだ鳴き声が遠くまで響く姿に、静かな存在感と芯の強さを感じます。
このサイト名「Laravel Wren」には、そんなミソサザイのように、小さくても確かな価値を届けたいという想いを込めています。

信頼できるパートナーとして、そして気軽に相談できる存在として、あなたのWebプロジェクトをサポートします。

Yudai Tsuyuzakiをフォローする