はじめに
Laravelでの開発時にDebugbarとエディタを連携させブラウザでの出力とシームレスに連携してコーディングを行うためのTIPSです。
インストールや初期設定などは行っている状態での説明になります。
上記に関する詳しい解説は以下をご参照ください。
デバッグしたい
Laravelでも何でもそうですが、開発している時はとりあえずデバッグしたいと考えるかと思います。
xdebugをインストール・設定してリモートデバッグしてもいいのですが、お手軽に環境を作りたいです。
Laravel Debugbar
利用する場合はcomposer経由でインストールし
composer require --dev barryvdh/laravel-debugbar
設定を下記のように有効にするだけです。
APP_DEBUG=true
初期設定ではデフォルトでtrueになっています
laravelの組み込みサーバを立ち上げて
php artisan serve
http://127.0.0.1:8000/ にアクセスするとこのような感じでブラウザの出力にオーバーライドされます。
いろいろな情報が把握できて便利ですね。このあたりは割とデファクトなのかと思います。
Debugerとエディタを連携させたい
せっかくブラウザに関連するlaravelのファイルがリストアップされるのにエディタとしてJetBrains社のPhpStormを利用していないとハイパーリンクが繋がりません。
これはリンクが「phpstorm://open?file=%path&line=%line」のようなフォーマットになっているからです。
つまりPhpStormをエディタとして使っていれば内部の独自プロトコルとして認識され、当該ファイルがエディタでオープンされる仕組みのようです。
それではせっかくの便利機能が使えないのは困ります…ですので設定で改善していきます。
configファイルで設定
Debugbarのconfigファイルで細かく設定を調整したい場合は以下のようにartisanを用いてconfigファイルをコピーします。
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
これにより APP_PATH/config/debuger.php が生成され設定の上書きが可能になります。
/*
|--------------------------------------------------------------------------
| Editor
|--------------------------------------------------------------------------
|
| Choose your preferred editor to use when clicking file name.
|
| Supported: "phpstorm", "vscode", "vscode-insiders", "vscode-remote",
| "vscode-insiders-remote", "vscodium", "textmate", "emacs",
| "sublime", "atom", "nova", "macvim", "idea", "netbeans",
| "xdebug", "espresso"
|
*/
'editor' => env('DEBUGBAR_EDITOR') ?: env('IGNITION_EDITOR', 'phpstorm'),
例示でサポートされたエディタの値を環境変数 IGNITION_EDITOR1 の初期値として設定することが可能です。
config/debuger.phpをコミット対象にするとプロジェクト全般で設定が有効になります。チーム開発の場合、環境は人それぞれ違うかと思いますのでコミットされる可能性があるconfigで属人的な設定を行うよりは次で例示する.envファイルで行う方法の方が一般的かと思います。
.envファイルで設定
.envファイルに環境変数として設定します。
+DEBUGBAR_EDITOR=idea
また2は
+IGNITION_EDITOR=idea
で上書き設定が可能です。
これでハイパーリンクのクリックでファイルをエディタでオープンすることができるようになり便利です。
リモートサーバ実行時でも動作させたい
docker/sailなどリモートサーバでデバッグしている場合はパスがサーバ上の値でハイパーリンクに設定されるため、うまくファイルが開けません。そこでパスを調整するために以下の設定を追加します。
+DEBUGBAR_LOCAL_SITES_PATH=/path/to/local/development_project/laravel
または
+IGNITION_LOCAL_SITES_PATH=/path/to/local/development_project/laravel
これでパスが通り、リモート実行時でも連携可能になります。