こんにちは!エンジニアのオータケです!
みなさんはLaravelで変数の値の確認やデバッグ目的のメッセージ表示など、どういった方法で行っていますか?
また、Laravelではどういうやり方がオススメなのか知りたい方にはこの記事必見です!
この記事ではLaravelDebugbarというライブラリを導入することで変数内の値やその他様々な情報をブラウザ上で操作しながら確認することができるんです!
本記事を読んでいただくことで
[基本]基本的な使い方
[実践]LaravelDebugbarが動かない?
を理解することができます!
開発効率にこだわる人にはおすすめです、絶対に読んでいってくださいね!
LaravelDebugbarとは?
LaravelDebugbarとは変数内の情報やプログラムのデバッグを楽にしてくれる素晴らしいツールです。
次の画像を見ていただくとわかりますが、画面下部にDebugbarが表示されているのがわかるかと思います。
Debugbarを使うことで面倒な値確認などがブラウザ上で簡単にできるようになるんです!
導入してみよう
では実際にLaravelDebugbarを導入してみましょう!
導入はとても簡単です。
composer require barryvdh/laravel-debugbar
たった、これだけです。
早速実行してブラウザでアクセスしてみましょう。
artisan serve
実行結果:
このように画面下部にバーが出ていれば成功です!
もし、本番環境で表示にしたくなければ.envファイルのAPP_DEBUGをfalseにするとよいでしょう。
プログラム上で表示・非表示を切り替えたい場合は次のようにします。
非表示したい場合
\Debugbar::disable();
表示したい場合
\Debugbar::enable();
使ってみよう
では実際に使ってみましょう。
サーバーにリクエストが有った際にリクエストの中身(変数)を表示してみたいと思います。
DebugbarのRequestという項目を確認してください。
このタブではどういうリクエスト内容でアクセスしているかの変数が一通り確認することができます。
では次に自分が定義した変数や配列の中身を見たい場合はどうすればよいでしょうか?
まず変数の中身を覗いてみたいのですがどうするとよいでしょうか?
そのためには配列内容を表示するプログラムを記述する必要があります。
早速みてみましょう、次のような形です。
$value = [10, 30, 50, 100]; \Debugbar::addMessage($value);
実行結果:
addMessageメソッドを使うことで、このようにメッセージ欄に文字が表示されるようになりました。
(他にもinfoメソッドやerror,warningメソッドなどがあります。)
では、次に例外が発生した場合に表示されるエラーメッセージを見てみましょう。
ここでは、try中に意図的に例外を発生させています。
Route::get('/', function () { $exception = new Exception('Error Hoge Hoge'); try { throw $exception; } catch(Exception $e) { \Debugbar::addThrowable($e); } return view('welcome'); });
実行結果:
このようにエラーメッセージとともにどの部分で例外が発生しているかのコードのプレビューも表示してくれる素晴らしい機能付きです!
では最後に、データベース関係の処理について見てみましょう。
やっぱり動作が重くなったりする原因は無駄なSQLの発行であったりモデルのデータの使い方に問題があるなどデータベース関係の処理が影響してくると思います。
Debugbarを使うことでどんなSQLが実際に発行されているかが一目瞭然になります。
では早速サンプルコードを見てみましょう!
Route::get('/', function () { $user = App\User::find(1); return view('welcome'); });
ユーザーモデルから一人分の会員データを取得する処理を書いています。
Debugbarで実際に次の画像を見ていただくと、SELECT文が発行されていることがわかりますよね?
このように実際にどんなSQLが投げられているのかもわかってしまうスグレモノなんです!
まとめ
いかがでしょうか?
この記事を読んでいただければDebugbarを入れない理由がないですよね!?
今すぐ、今すぐ導入しましょう!
そして開発効率をあげて今すぐ仕事を終わらせましょう!
では皆さんまた別の記事でお会いしましょう。
よりよりLaravelライフを!