LoginSignup
187
204

More than 5 years have passed since last update.

Laravel5.7: Laravel Debugbarを使う

Last updated at Posted at 2017-05-31

Laravelでの開発にはとても便利なので、追加することをお勧めします。

親記事

Laravel 5.7で基本的なCRUDを作る - Qiita

Debugbarをインストールする

:link: barryvdh/laravel-debugbar: Laravel Debugbar (Integrates PHP Debug Bar)
:link: 開発に欠かせない Laravel Debugbar の導入 - Larapet

PowerShell
# 本来は --dev を付けますが、今回は本番環境でも使いたいので下記のように。
# ただし、パスワードも丸見えになるので注意!
> composer require barryvdh/laravel-debugbar

Laravel5.5からはAuto Discoveryの機能があるので、Composerでrequireするだけで使えるようになります。

(補足) Auto Discoveryとは

本来なら、app.phpでサービスプロバイダとファサードに登録する作業が必要です。

config/app.php
    'providers' => [
+       Barryvdh\Debugbar\ServiceProvider::class,
    ],

    'aliases' => [
+       'Debugbar' => Barryvdh\Debugbar\Facade::class,
    ]

しかしLaravel5.5以降は、このデバッグバーのようなパッケージの開発者が、そのパッケージのcomposer.jsonextraセクションで記述しておいてくれれば、我々利用者が上のような作業をする手間が省けます。
:link: readouble.com: パッケージディスカバリー
:link: [Laravel5.5]Package Auto Discoveryを理解する

そして、このデバッグバーの開発者さんは、きちんと対応してくれています。
:link: デバッグバーのcomposer.json(35行目)

Debugbarの設定を変更する

デバッグバーを画面に表示するかどうかは環境変数APP_DEBUGの値(true/false)で決まります。
しかし、下記のようにDebugbarの設定ファイルを生成すればAPP_DEBUGに左右されずに設定できます。

PowerShell
# デバッグバーの設定ファイル(config/debugbar.php)を生成する
> php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

環境設定ファイルにDebugbarの設定を記述します。

.env
DEBUGBAR_ENABLED=null  # デフォルト。APP_DEBUGに応じて決まる
DEBUGBAR_ENABLED=true  # 必ず有効
DEBUGBAR_ENABLED=false # 必ず無効

今回のアプリは練習用であり、本番環境でもデバッグバーを表示させます。
本番の環境設定は下記のようになる予定です。

本番の環境設定
APP_ENV=production
APP_DEBUG=false # 一般的な本番環境と同じく、デバッグ表示は無効
DEBUGBAR_ENABLED=true # デバッグバーは有効

なお、ローカル環境でも上のようにするのはやりすぎです。
デバッグバーは万能ではなく、ソースコードにミスがあってアプリ自体が動かない場合はデバッグバーも表示されません。
そんな時はAPP_DEBUG=trueによるデバッグ表示が役に立ちます。

003.png

Debugbarを使う

:link: Usage

たとえばデータベースから取得した記事一覧を確認したい時、Postコントローラで下記のように記述すれば、var_dump()よりは分かりやすく表示できます。

app/Http/Controllers/PostController.php
     public function index()
     {
         $posts = Post::latest()->get();
+        \Debugbar::info($posts);
         return view('posts.index', ['posts' => $posts]);
     }

001.png

また、QueriesでSQLを確認できます。
記事一覧を新しい順に取得する時、SELECT * FROM `posts` ORDER BY `created_at` DESCというSQL文が実行されているようです。

002.png

187
204
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
187
204