Help us understand the problem. What is going on with this article?

Laravel Tinker Serverを使ったお手軽デバッグ

More than 1 year has passed since last update.

Laravelでアプリケーション開発をしているとある処理時点での変数がどうなっているのか確認したい時があると思います。

Laravel Tinker Server は確認したい処理部分のコードに tinker(確認したい変数) メソッドを挟むだけで、Tinker Serverがキャッチしてターミナル上で変数を確認できたり、いじったりすることができとても便利です。

Laravel 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での開発をオススメします。

daiki7nohe
RubyとかAngular、React書いてます。 クラウド使ってできるだけ楽をしたい。
fusic
個性をかき集めて、驚きの角度から世の中をアップデートしつづける。
https://fusic.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away