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をアップグレードするモチベーションが上がりますね。

By khino