Laravelでデバッグをしているときに、複数の変数の中身をまとめて確認したい時がある。この方法について。
また、Laravelのデバッグで使用するdump, dd, dddヘルパーの処理や見え方の違いについても解説しています。
複数の変数を同時にデバッグする方法
Laravelのデバッグで重宝するコマンドは、dd、dump、dddがあります。
どの場合もデバッグしたい変数の指定方法は同じで、引数の中でカンマで区切って記述していきます。
dd($var1, $var2, $arr, $obj);
実例:ddの場合
例えば、以下のように4つの変数を同時にデバッグします。
ddは、そこで処理を終了して、後ろに続くコードは実行しません。
public function index()
{
$var1 = '変数1';
$var2 = '変数2';
$arr = ['AAA', 'BBB', 'CCC', ['DDD', 'EEE'], 'FFF'];
$obj = [
'x' => 'xxx',
'y' => 'yyy',
'z' => 'zzz'
];
dd($var1, $var2, $arr, $obj);
return view('contact.index');
}
画面上に指定した変数の中身がまとめて表示されます。一つ一つは黒い枠で区切られます。
実例:dumpの場合
dumpの場合は、デバッグ内容を表示した後、後ろに続くコードも実行します。
public function index()
{
$var1 = '変数1';
$var2 = '変数2';
$arr = ['AAA', 'BBB', 'CCC', ['DDD', 'EEE'], 'FFF'];
$obj = [
'x' => 'xxx',
'y' => 'yyy',
'z' => 'zzz'
];
dump($var1, $var2, $arr, $obj);
return view('contact.index');
}
画面上に指定した変数の中身がまとめて表示されます。一つ一つは黒い枠で区切られます。その下で、次の処理も実行されます。(ここではビューを表示)
実例:dddの場合
dddはLaravel6から使えるようになったデバッグ用のヘルパ関数です。dddの場所で処理を停止し、デバッグ内容を表示します。
ddよりも詳細で、どのファイルの何行目に書かれた処理を実行しているかが表示されます。
public function index()
{
$var1 = '変数1';
$var2 = '変数2';
$arr = ['AAA', 'BBB', 'CCC', ['DDD', 'EEE'], 'FFF'];
$obj = [
'x' => 'xxx',
'y' => 'yyy',
'z' => 'zzz'
];
ddd($var1, $var2, $arr, $obj);
return view('contact.index');
}
画面上に指定した変数の中身がまとめて表示されます。一つ一つは黒い枠で区切られます。その下で、次の処理も実行されます。(ここではビューを表示)
文字列を指定してどの変数の内容かわかるようにする方法
dd, dump, dddのいずれの処理も、指定した変数の値のみしか表示しないので、デバッグ画面でそれぞれがどの変数を指しているのかわかりにくいことがあります。
画面上では以下のように、”変数1″、”変数2″と表示されますが、各値がどの変数の中身なのかは表示してくれません。
それぞれがどの変数かを表示するには、dd, dump, dddで処理を記述したときに変数の前に文字列を追記します。
例えば、以下のように、文字列を記載して、「.」で繋ぎます。文字列の最後は「: 」としておくと隙間ができてわかりやすくなります。
dd("var1: ".$var1);
実例:ddの場合
public function index()
{
$var1 = '変数1';
$var2 = '変数2';
$arr = ['AAA', 'BBB', 'CCC', ['DDD', 'EEE'], 'FFF'];
$obj = [
'x' => 'xxx',
'y' => 'yyy',
'z' => 'zzz'
];
dd("var1: ".$var1, "var2: ".$var2, $arr, $obj);
return view('contact.index');
}
これが使えるのは文字列のみで、配列には使えません(使うとエラーになります。)
dumpとddとdddの違い
dumpとddとdddの違いは処理を終了するか・継続するかと、表示画面の違いになります。
dumpとddはLaravel公式のヘルパなのでLaravel公式ページのヘルパ一覧に記載がありますが、dddはLaravel Ignitionのヘルパなので、ここに記載がありません。
ヘルパ | 後続の処理 | 定義元 |
---|---|---|
dump | 続ける | Laravel |
dd | 終了する | Laravel |
ddd | 終了する | Laravel Ignition |
Laravel Ignitionとは?
Laravel Ignitionとは、Laravelでエラーが発生したときに表示されるオシャレなデバッグ画面のことです。
dddはLaravel Ignitionの中で定義されているファサードのため、dddを使うと以下の画面のDebugというタブの中に、デバッグ内容が表示されます。
(参考)【Laravel】ファサード(Facade)とは何か?メリットとデメリットや使い方を実例で解説。