Laravelでアプリケーション開発をしているとある処理時点での変数がどうなっているのか確認したい時があると思います。
Laravel Tinker Server は確認したい処理部分のコードに tinker(確認したい変数)
メソッドを挟むだけで、Tinker Serverがキャッチしてターミナル上で変数を確認できたり、いじったりすることができとても便利です。
from: https://github.com/beyondcode/laravel-tinker-server
インストール
$ composer require --dev beyondcode/laravel-tinker-server
オプションで設定ファイルが欲しい場合は
$ php artisan vendor:publish --provider=BeyondCode\\LaravelTinkerServer\\LaravelTinkerServerServiceProvider
使い方
使い方は簡単でTinker Serverを起動して、確認したい処理部分に tinker(確認したい変数)
メソッドを挟むだけです。
Tinker Serverを起動。
$ php artisan tinker-server
確認したい処理で、tinker()
を呼ぶ。
$user = App\User::find(1);
tinker($user);
複数の変数を渡すこともできます。
$user = App\User::find(1);
$posts = App\Post::all();
tinker($user, posts);
その後、アプリケーションでその処理に到達するとREPLシェルが呼ばれ、渡した変数が確認できゴニョゴニョいじることができます。
$ >> $posts->find(1);
=> App\Models\Post {#1234
id: 1
title: XXXX
body: XXXXX
created_at: XXXXX
updated_at: XXXXX
}
さらに、td()
というメソッドも提供されていて、これは dd()
と似ていてインタラクティブにならずTinker Serverに変数を出力するのみの機能となっています。
変数の内容だけ確認したい場合はこちらでいいかと思います。(debugbar使っていればいらないかもしれないですが...)
まとめ
私はもともとRailsでの開発をしていて、デバッグにはRuby gemの pry
を使って処理を止めてインタラクティブに変数の確認やいじることができました。
Laravelの開発でも同じことしようとすると XdebugとPHPStormまたはVSCodeなどを組み合わせたらできますが、Xdebug環境やエディタの設定が面倒な方はLaravel Tinker Serverなら簡単に使い始めることができると思います。
ただTinker Serverでは"処理を止めて" デバッグはできないですし、毎回確認したい変数を tinker()
に渡さないといけないのでそこまでスマートではないので、高機能なものが欲しい方はXdebugでの開発をオススメします。