1
0

LaravelでVSCodeがよしなにメソッドを読み込んでくれない

Last updated at Posted at 2024-05-13

VSCodeも万能じゃない。

背景

なぜか読み込んでくれないからエラーになることがある

ある日、Laravelで外部サービスログイン機能を実装するために、Socialiteをインストールしたら事件は起こった。
書き方は正しいのにVSCodeが「そんなメソッドはない」と言ってくる!
image.png
(socialiteのドライバーで読み込んだstatelessメソッドが存在しない警告エラー)

でも、動かすとちゃんと想定通りに動く。
そりゃちゃんと公式リファレンスの仕様通りに書いてるからね…。

原因を調べると、どうやら読みはあっていたようで、
動的なインスタンスにはIDEがうまいこと動いてくれていないらしい。
~IDEとは~

解消法を調べていたところ、明示的にクラスパスを指定できる記法なるものがあるらしいので、適用してみる。

解決法

呼び出したクラスを明示的に宣言する

書き方はこれ。

/** @var Laravel\Socialite\Two\GoogleProvider  $driver */
$driver = Socialite::driver('google');

呼び出したDriverがどのクラスの内容で生成されるのかを/** */で定義している。

今回の例でいうと、Socialite::driver('google')で呼び出したものはLaravel\Socialite\Two\GoogleProviderというクラスのモノが使えるはずとなる。

/** @var Laravel\Socialite\Two\GoogleProvider $driver */が記載されることで、IDEは「$driverという変数にはLaravel\Socialite\Two\GoogleProviderクラスが入ってくるらしい」という認識がされるため、内部のメソッドまで正常に読み込んでくれる。
image.png

ただし、以下のような書き方は駄目です。
image.png

一気に書いてしまいたいところですが、まずはDriver単体をしっかり読み込ませる必要があるため、ワンクッションおきましょう。

今後も何故か読み込んでくれないという事象が発生したら、上記を試してみましょう。

参考

LINEオープンチャット「Laravel初心者勉強会」の皆様
Laravel初心者勉強会

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0