【Laravel 5.7】新機能、Dump Serverでデバッグの効率を上げる

Laravel

この記事では、Laravel5.7で追加された新機能、Dump Serverの使い方を紹介します。

Dump Serverを使うと、dump()だけではできなかった、dump結果をログのように見返すことができるようになります。

dump()はLaravel5.7より前からあるヘルパー関数で、デバッグを手軽に行えるというメリットがあります。

けれど、そのデバッグがブラウザ上に表示されるため、dumpする内容を変更すると、そのときの結果を見返すことができません。

後からdumpした結果を見返すためには、log()を使用して laravel.log に出力しておく必要がありました。

ただし、laravel.log はdumpしたデータだけでなく他のログも出力されるため、他の埋もれてしまい、見辛くなってしまうことがあります。

Dump Serverでは、結果をコンソール上に出力するため、ログのように見返すことができます。また、dumpした以外のデータは表示されないため、内容を確認しやすくなっています。

それでは、Dump Serverの使い方を下記で説明します。

スポンサー

Dump Serverの使い方

文字列をdumpしてみる

まずは、文字列をdumpして、結果がどのように表示されるかを確認します。

routes/web.phpdump() を設定します。


Route::get('/', function () {
    
    dump('Show welcome page');

    return view('welcome');
});

ローカルサーバを起動

つぎに ローカルサーバを起動します。


php artisan serv

Dump Serverを起動

Dump Serverの起動には、dump-server を実行します。
コマンドを実行すると、Dump Serverは待受状態になります。


php artisan dump-server

dump()を追加したURLにアクセスすると、Dump Serverを起動中のコンソールに文字列が出力されます。

モデルをdumpしてみる

文字列をdumpしたときの表示内容はかくにんできました。

次はモデルをdumpした場合はどのように表示されるかを見てみましょう。

UserモデルにtoArray()した結果をdumpしてみます。


Route::get('/', function () {

    dump(auth()->user()->toArray());

    return view('welcome');
});

リクエストパラメータをdumpしてみる

最後にリクエストパラメータをdumpした結果を確認します。

POSTメソッドでパラメータをリクエストします。リクエストにはテストコードを使用します。

resources/web.php でリクエストをdumpします。


Route::post('/post', function () {
    dump(request()->all());
});

Featureテストの作成


php artisan make:test DumpServerTest

class DumpServerTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testExample()
    {

        $this->post('/post', [
            'title' => 'hello world',
        ]);

        $this->assertTrue(true);
    }
}

テストを実行してPOSTリクエストを送信


phpunit tests/Feature/DumpServerTest.php

テストコードで送信したリクエストが出力されています。

Tips

dump()は配列を引数にとることができます。なので、下記のように配列の第一引数にdumpする処理を文字列で設定し、第二引数に処理を渡すと、下記イメージのようにコンソールに出力されます。

あとから結果をさかのぼるときに、何を出力したのかを確認しやすくなります。


dump(['auth()->user()->toArray()', auth()->user()->toArray()])