🦔

IntelliJ系で便利機能3選 PHPデバッグ等

2021/04/19に公開

今回はPHPデバッグ関連です

  • 高機能すぎて何を使って良いのか分からない。
  • IntelliJの使い方やメリットを何度も説明しちゃう……(私ですが)

という場合の要望に応える機能3選シリーズです。

3選って長くなく短くもなくほどよい気がします。たぶん。

Xdebug

https://pleiades.io/help/phpstorm/configuring-xdebug.html

Xdebugはかなり昔からある超有名なPHPデバッガーです。

その割に環境を整える上で設定が煩雑だったり、そもそもPHPしか触れたことがない開発者は、デバッガーの存在も知らずver_dump開発で頑張っている場合も多いです。そのためXdebugはあまり使われていませんでした(個人の感想です)。
最近ではDocker環境のおかげで、Xdebug導入も進んでいると思います。

Xdebugの設定とデバッガーの使い方は、PhpStormのヘルプに詳細に記載があるのでそちらもご確認ください。

https://pleiades.io/help/phpstorm/debugging-with-phpstorm-ultimate-guide.html
http://xdebug.org/

PHPUnit

https://pleiades.io/help/phpstorm/using-phpunit-framework.html

PHPUnitはかなり昔からある超有名なPHPテストフレームワークです。

昨今ではライオンでおなじみの和田卓人(t-wada)さんらの活躍により、ユニットテスト(言語問わず)が導入されている現場も多いでしょう。

上記に書いたXdebugと連携して使用すると、ソースコード解析やデバッグが非常に捗ります。
テストを書いておき、そこに関連する不具合や動作を確認する際、Xdebugのブレークポイントでコードリーディングを行う一連の流れがとても気持ちいいです。

https://phpunit.de/

https://zenn.dev/naoyukik/articles/8c4d91145c7b2e7d99e8
※なお、こちら私がPhpStorm+Docker+PHPUnitの設定時にハマったポイントを記事にしたものです。

data set

PHPUnitでテストを書く際、強力な手法として Data Providers というものがあります。
これは、同一テストでケースのみ変更したテストをする場合、テストケース(パラメーター)を配列で用意し、テストアサーションをループさせる手法です。
そのData Providersで生成される個々のケースは data set と呼ばれます。
このdata setは配列として作成されるので、個々にキーをつけられ、キーは名前になります。
PhpStormがPHPUnitのテストを実行すると、その名前をテスト一覧に表示しますので、data setにはゼヒケース名をつけてください。

以下、PHPUnitサイトからExampleの抜粋です。
2. Writing Tests for PHPUnit
Example 2.6 Using a data provider with named datasets

<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class DataTest extends TestCase
{
    /**
     * @dataProvider additionProvider
     */
    public function testAdd(int $a, int $b, int $expected): void
    {
        $this->assertSame($expected, $a + $b);
    }

    public function additionProvider(): array
    {
        return [
            'adding zeros'  => [0, 0, 0],
            'zero plus one' => [0, 1, 1],
            'one plus zero' => [1, 0, 1],
            'one plus one'  => [1, 1, 3]
        ];
    }
}

下記はPhpStormのテスト結果

Composer

https://pleiades.io/help/phpstorm/using-the-composer-dependency-manager.html

Composerはかなり昔からある超有名なPHPパッケージ管理ツールです。
これはもうほとんどのプロジェクトで導入されていると言っても過言ではないでしょう。
PhpStormでは、Composerの設定することでcomposer.jsonを読み取り、パッケージのバージョンなどを表示してくれます。
また、composer.jsonにプロジェクトで使用可能なPHPのバージョンを記載することで、PhpStormがバージョン毎の適切に使用できる関数等をサジェストしてくれるようになります。

https://getcomposer.org/

以上

今回はPHP関連の機能について取り上げました。
PHP開発をする上でどれも欠かせないものなので、XdebugやPHPUnitはまだ手を出せていないという方はこの記事を機会に触れてもらえれば幸いです。
大げさな話ではなく、どちらも導入することでデバッグや開発の次元が変わることと思います。

Discussion