この記事では、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.php
に dump()
を設定します。
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()])