どうも音又です。
先日、VSCodeを利用してPHPのコードを書いている際に、関数の補完(インテリセンス)が効かずに未定義扱いでエラーが出ているのに気づいたので、
その問題を解決するべくやったことを書き残しておきます。
問題:インクルードしたスクリプトの関数を補完出来ていない
まずインテリセンスが効かず、未定義扱いでエラーが出ている関数はどれもrequire_onceで呼び出したスクリプトファイル内で記述、定義された関数だったのでその辺りでミスが無いか調べました。
がしかし。
一通りチェックするも問題が見当たらず、さらにそもそも未定義エラーは出るものの、実際のプログラム自体は問題なく動いている為、他に原因があるのではないかと思いググってみることに。
原因:VSCodeプラグインのバグ説
大正義グーグル先生で調べてみるとこんな記事を発見。
VS CodeのPHP Intelephense 1.3.0でファイルが走査されずエラーとなる – 株式会社MIRAI
この記事でも同様に関数などが未定義扱いになる問題が発生していた為、VSCode内でPHPコードの補完をするプラグイン『PHP Intelephense』のバージョンを1.2.3に下げたところ問題が解決したとのこと。
2019年12月の記事なので少し古いですが、症状自体は酷似しているし、実際僕も『PHP Intelephense』プラグインは利用しているのでこれが怪しそう。
『PHP Intelephense』のダウングレードで解決
ってことで早速『PHP Intelephense』のバージョンを下げます。
VSCodeの拡張機能画面から『PHP Intelephense』を探し、右クリック
右クリックすると「別バージョンをインストール」という項目があるのでそれをクリック。
この中から1.2.3を選べばOK
ちなみに今回この問題が起こった時に使用していたバージョンは1.5.4。
あと試しに1.5.3などにもしてみましたが、解決しなかったため、当問題を解決するには1.2.3まで下げるのが一番手っ取り早そう。
というか1年もこんな問題が放置されてるのはどうなんだろうか。
おわり
ということで、PHPで関数のインテリセンスが効かない問題を解決する上でやったことをいろいろ書いてきました。
今回の問題は、プログラムの挙動自体には影響はないですが、とはいえ赤いエラーマークがずっと出ているのも精神衛生上よくなさそうなので解決できてよかったです。
ではこのへんで。さいなら
コメント