【PHP】composerでinstallしたライブラリのclassがuseできない、補完が効かない時の対処法

事象

composerでインストールしたパッケージの中にあるクラスをuseしようとしたとき、VScode上で警告が出た。

しかし、実行自体は問題なく出来たためよく分からず、vendorディレクトリの中を見てみると、以下のようになっていた。

原因

どうやら、pharの形式でライブラリがインストールされるとPHPは実行時に理解することができるが、VScode上ではそれが展開されないためIntelephenseのような静的解析ツールは理解することができず警告を出してしまうよう。

このpharという形式については以下を参照ください

www.php.net

解決方法

PhpStormを使うか、phar形式から解凍することでVScodeでも補完が有効になる。

以下のようにphar形式のファイルのパスと展開先のパスを書くことで中身を展開できる。

<?php

$phar = new Phar('./vendor/phpstan/phpstan/phpstan.phar');
$phar->extractTo('./vendor/phpstan/phpstan/extracted');

もしくは、PhpStormを利用するとファイル一覧からpharの中身を見ることができ、classが無いという警告は発生しない