MacOS Sequoia 15.3.1
VScode version: 1.98.1 (Universal)
PHP 8.4.5
VScodeでアラートが出ています

とあるphpファイルを触ったら、
Undefined constant 'PHP_EOL'と表示されています。
非常に怒られている感じです。
これは何でしょうか。
PHP_EOLとは
PHP_EOL は、PHPにあらかじめ定義されている定数の一つ。
コード内で直接改行コードを記述する代わりに PHP_EOL を使用することで、異なる環境でも正しく改行が行われるようになる。
Undefined constant 'PHP_EOL' とは
PHPのコード内で PHP_EOL という定数が定義されていない状態で
使用されていることを意味します。
どうして怒られるの
PHPの設定でこの定数が有効になっていない可能性あり。
もしくはコード内で PHP_EOL を誤って記述している。
..身に覚えがない..
PHP Intelephense は関係ない?
PHP Intelephenseとは:
コードの解析や補完、エラー検出などを行うための拡張機能で、先日インストールしたばかり。
インストール後からアラートが出るようになった。
これが悪さしているのではないか。
ユーザー設定を開く
- Windows/Linux: Ctrl + Shift + P
- macOS: Cmd + Shift + P
基本設定: ユーザー設定を開く を選択し、settings.jsonを開く。
検索ボックスに intelephense と入力
下記2箇所でみつかるも、どっちをどう直すのか?
1箇所め
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
},
これは.php ファイルを開いたときのデフォルトのフォーマッター(コードの整形ツール)を PHP Intelephense に設定するもの。
コードの自動整形に関する設定であり、今回のPHP_EOL アラートとは直接関係ない。
2箇所め
"intelephense.stubs": ["wordpress"]
この設定は、PHP Intelephense がコード解析に使用するスタブファイル(PHPの組み込み関数や定数の定義ファイル)を定義するもの。
今回の PHP_EOL アラートは、PHP Intelephense が PHP_EOL を未定義の定数として検出したのか。
PHP_EOLはPHPの組み込み定数であるため、coreというスタブファイルにも定義されている。
→それを追記すれば良いんですかね。
以下のように書き換えてみる
"intelephense.stubs": ["wordpress", "Core"]
スタブファイル名は大文字小文字を区別する。
調べるとこの上記のように出てきますが、Cは大文字です。
settings.jsonを上書きすると、VScodeの再起動でアラートが消えました。
これにより、PHP Intelephense は WordPress 関連の関数や定数だけでなく、PHPの組込み関数や定数も認識できるようになったようです。
以上です。
参考:
VSCode 拡張機能「PHP Intelephense」の使い方、間違ってました…
https://qiita.com/falya128/items/70e854ae7ca71567820b
直接関係なかったようですが勉強になりました。