Laravelではdd()というヘルパー関数をデバッグでよく使用しますが、ddd()は初耳です。なぜなら、Laravel 6.xバージョンで新登場したデバッグの関数だからです。
dd()
新登場のddd()の比較のためと、Laravel 6.xの以前のバージョンのために、まずdd()の使用を見てみましょう。
dd()を以下のように追加すると、
Route::get('/', function () {
$user = App\User::first();
dd($user);
return view('welcome');
});
以下のように実行を止めて、引数で指定した変数の情報をブラウザに表示してくれます。

その時点で、実行した関数のスタックトレースをしたいなら、
Route::get('/', function () {
$user = App\User::first();
dd(print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),true));//面倒なら、debug_backtrace(2)でもOK
return view('welcome');
});
とすると、
Array
(
[0] => Array
(
[file] => /vol1/usr/www/repos/repos/l6x/vendor/laravel/framework/src/Illuminate/Routing/Route.php
[line] => 205
[function] => {closure}
[class] => Illuminate\Routing\RouteFileRegistrar
[type] => ->
)
[1] => Array
(
[file] => /vol1/usr/www/repos/repos/l6x/vendor/laravel/framework/src/Illuminate/Routing/Route.php
[line] => 179
[function] => runCallable
[class] => Illuminate\Routing\Route
[type] => ->
)
[2] => Array
(
[file] => /vol1/usr/www/repos/repos/l6x/vendor/laravel/framework/src/Illuminate/Routing/Router.php
[line] => 681
[function] => run
[class] => Illuminate\Routing\Route
[type] => ->
)
...
ddd()
さて、Laravel 6.xのバージョンのddd()ヘルパーを使用すると、
Route::get('/', function () {
$user = App\User::first();
ddd($user);
return view('welcome');
});
以下のように、とても見やすいUIで出力してくれます。

そればかりでなく、関数スタックのトレースもメニューを選択して表示してくれます。しかも、Laravel内部での関数の実行を隠して(拡張して見ることも可能)開発した関数だけを見せてくれます。

こういう便利な機能を追加してくれると、Laravelをアップグレードするモチベーションが上がりますね。
メルマガ購読の申し込みはこちらから。