LoginSignup
2
1

More than 3 years have passed since last update.

IntelephenseでPHAR版のPHPUnitのコード補完を効かせる

Posted at

私はPHPUnitを依存関係に組み込むのが嫌なので、PHPUnitのインストールはComposerを使わずにPHIVEを使ってPHARをダウンロードすることで行っています。

PHIVEの基本的なことについては下記の記事を読むとわかると思います。

PHAR版のPHPUnitの困ること

PHAR版のPHPUnitを使うと依存関係を汚さなくて済むのですが、困ることもあります。
それはテストコードを書く際にIntelephenseでassertEquals等のメソッドがエラーになったり、コード補完が効かなかったりすることです。
これらはIntelephenseがPHARファイルを読み込んでくれないことに起因します。

assertEqualsメソッドが存在しないというエラーが出ます。
スクリーンショット 2021-04-11 000255.png

コード補完も効きません。
スクリーンショット 2021-04-11 000818.png

解決方法

解決方法は至極単純で、PHARを展開して中に含まれるPHPファイルを取り出すことです。
PHARを展開してプロジェクトディレクトリ配下のどこかに置けば、それをIntelephenseが読み込んでくれるようになり、エラーが消えてコード補完も効くようになります。

下記のようなコードを書いて実行すればPHARを展開できます。

<?php

$phar = new Phar('.phive/phars/phpunit-9.5.4.phar');
$phar->extractTo('tools-src');

上記のコードではPHPUnitのPHARをtools-srcディレクトリに展開しています。

展開後にテストコードを開くとassertEqualsメソッドのエラーが消えました。
スクリーンショット 2021-04-11 000524.png
コード補完も効くようになりました。
スクリーンショット 2021-04-11 000737.png

おまけ

PHARを展開するためのコマンドを作って公開しています。

特定のPHARを展開するだけでなく、ディレクトリに含まれるPHARを一括で展開したり、PHIVEのphars.xmlに記載されているPHARを一括で展開したりできます。

2
1
1

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
2
1