Laravel6 初心者デバッグまとめ
概要
Laravelを使った初めての開発でデバッグに使用した方法をまとめます。
動作環境:Laravel6
デバッグバーの導入
デバッグバーでは、Queriesで発行されているSQLの確認ができたり、ViewsでBladeのファイルを確認できたりします。リクエスト情報も確認できるので、テストコードを書かずにすぐに確認できるのが便利です。
$ composer require barryvdh/laravel-debugbar --dev
設定ファイル
.env
// オン
APP_DEBUG=false
// オフ
APP_DEBUG=true
※.envを編集して設定が変わっていなかったらキャッシュを削除する
php artisan config:cache
デバッグに使う関数(PHP)
dump()
シンプルに中身だけを表示する
$test = array(1,2,3,4)
dump($test)
// 結果
array:4 [
0 => 1
1 => 2
2 => 3
3 => 4
]
var_dump()
$test = array(1,2,3,'あ','い','う')
var_dump($test)
// 結果
array(6) {
[0]=> int(1)
[1]=> int(2)
[2]=> int(3)
[3]=> string(3) "あ"
[4]=> string(3) "い"
[5]=> string(3) "う"
}
変数の型まですべて出力される。HTML側に出力されるため、ログには出すことができない。
var_export()
Log::info(var_export($test, true));
HTML側には何も表示されない。
ログに出力される。
varの使い分け
ログに出力したいかどうかで使い分ける
var_dump | var_export | |
---|---|---|
出力 | HTML | ログファイル |
リダイレクト | ✕ | ○ |
ログにファイル出力することで、リダイレクトする場合でもデバッグが出来るメリットがある。 |
Laravelのヘルパー関数
Laravelフレームワークが用意している便利な関数。
自分で作成することも出来る。
PHP単体では動作しない。
dd()
基本的にdump()と同じ。
dumpと違い呼び出すと処理が止まる。
明確にどこでエラーが出ているかがわからないときに使うと一個ずつ検証できて便利。
ddはシンプル
$test = array(1,2,3,4);
dd($test);
ddd()
dddも呼び出すと処理が止まる。
dddは()の中身以外の情報も見ることが出来る。
Stack trace | Request | App | User | Context | Debug |
---|---|---|---|---|---|
処理の順番 | リクエストの情報 | 実行したメソッド情報 | ログイン中のユーザー情報 | config系の情報 | ddd()の中身 |
ddd()は処理の全体を一発で見ることが出来るので便利 |
ログの出力
ファサードで出力
上に行くほど重要度が高
use Illuminate\Support\Facades\Log;
Log::emergency('emergency');
Log::alert('alert');
Log::critical('critical');
Log::error('error');
Log::warning('warning');
Log::notice('notice');
Log::info('info');
Log::debug('debug');
// 結果(ログファイル)
local.EMERGENCY: emergency
local.ALERT: alert
local.CRITICAL: critical
local.ERROR: error
local.WARNING: warning
local.NOTICE: notice
local.INFO: info
local.DEBUG: debug
設定ファイル
config/logging.php
ログファサードを使用してログファイルに出力することで、var_exportと同様に、HTMLに表示する必要がないので、リダイレクトした場合でもデバッグが出来る。
まとめ
Laravelの開発で使ったデバッグ方法をまとめました。
参考記事
https://zenn.dev/shimotaroo/articles/738d8e01796bc9
https://techblog.recochoku.jp/5438
https://reffect.co.jp/laravel/laravel-logging-setting
デバッグバー導入