事象
composerでインストールしたパッケージの中にあるクラスをuseしようとしたとき、VScode上で警告が出た。
しかし、実行自体は問題なく出来たためよく分からず、vendorディレクトリの中を見てみると、以下のようになっていた。
原因
どうやら、pharの形式でライブラリがインストールされるとPHPは実行時に理解することができるが、VScode上ではそれが展開されないためIntelephense
のような静的解析ツールは理解することができず警告を出してしまうよう。
このpharという形式については以下を参照ください
解決方法
PhpStormを使うか、phar形式から解凍することでVScodeでも補完が有効になる。
以下のようにphar形式のファイルのパスと展開先のパスを書くことで中身を展開できる。
<?php $phar = new Phar('./vendor/phpstan/phpstan/phpstan.phar'); $phar->extractTo('./vendor/phpstan/phpstan/extracted');
もしくは、PhpStormを利用するとファイル一覧からpharの中身を見ることができ、classが無いという警告は発生しない