はじめに
当記事は筆者がLravel/PHPで開発している際によく使うデバッグ方法のまとめです。
##dump()
$array = array(1,2,3,'いち','に','さん');
dump($array);
array:6 [▼
0 => 1
1 => 2
2 => 3
3 => "いち"
4 => "に"
5 => "さん"
]
**dump()**はシンプルに中の情報を表示するだけですね。
なお、処理は止まらずに死にません。
##verdump()
$array = array(1,2,3,'いち','に','さん');
var_dump($array);
array (size=6)
0 => int 1
1 => int 2
2 => int 3
3 => string 'いち' (length=6)
4 => string 'に' (length=3)
5 => string 'さん' (length=6)
**ver_dump()はdump()**と違って型が出力
されます。
なお、こちらも処理は止まらず死にません。
##dd()
$array = array(1,2,3,'いち','に','さん');
dd($array);
array:6 [▼
0 => 1
1 => 2
2 => 3
3 => "いち"
4 => "に"
5 => "さん"
]
一見**dump()**と似ていますが、**dd()**は処理の実行が止まって死んでいます。
要するにdd()関数がある行以降の処理は行われません。
下記の例でいうと、2行目で処理が止まっているため、三行目が実行されることはありません。
$array = array(1,2,3,'いち','に','さん');
dd($array);
array_push($array, 'よん');//←実行されない。
dd()とはdump and die の略です。
###Debugbar
実務でもよく使うのがDebugbarだと思います。
特にAJAXなどを利用して内部のAPIを使う場合は**dump()やdd()**が使えないので重宝します。
導入に関しては下記記事を参照してください。
Laravel5.7: Laravel Debugbarを使う
public function store(Request $request)
{
$like = new Like;
\Debugbar::info(1);
$like->user_id = $request->user;
\Debugbar::info(2);
$like->post_id = $request->post;
\Debugbar::info(3);
\Debugbar::info($like);
$like->save();
return;
}
info
1
info
2
info
3
info
App\Like {#322 ▶}
1,2,3は処理がどこまで実行されているか確認するためのtipsです。
4つ目のinfoで$likeの情報が取得できましたね。
#viewはどうしたらいいの?
Viewに関してはテンプレートエンジンの仕様を確かめてみてください。
筆者が利用しているBladeではphpディレクティブ(@php)が利用できました。
@php
Debugbar::info(1);
dump(1);
ver_dump(1);
dd(1);
@endphp
#終わりに
この四つさえ知っとけば、デバッグ作業で困ることはないと思います(多分)。