kakakakakku blog

Weekly Tech Blog: Keep on Learning!

PHPCompatibility v10.0.0-alpha1 で PHP 8.2 の非推奨コードを検出する

PHPCompatibility は2019年にリリースされた v9.3.5 で止まっていて,今まで PHP 8.x の非互換を検出する場合は dev-develop ブランチを使う必要があった.

github.com

リリース自体は止まってしまったのかな?と思っていたら,2025年10月に突然 v10.0.0-alpha1 が Pre-release で登場していた❗️なんと6年振り⌛️もう少ししたら正式に v10 がリリースされる可能性がある.

github.com

👾 index.php

たとえば以下のようなサンプルコードがあるとする.

<?php

$name = "kakakakakku";
echo "Hello ${name}!";

PHP 8.2 で ${var} 形式のまま文字列と結合する実装が非推奨になっている🚨

www.php.net

👾 composer.json (PHPCompatibility v9.3.5)

まずは PHPCompatibility v9.3.5 をセットアップする.

{
    "name": "kakakakakku/php-compatibility-v10",
    "require-dev": {
        "phpcompatibility/php-compatibility": "9.3.5"
    },
    "config": {
        "allow-plugins": {
            "dealerdirect/phpcodesniffer-composer-installer": true
        }
    }
}

実行すると非推奨になったコードを検出できなかった.

$ ./vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 8.2 src/index.php

👾 composer.json (PHPCompatibility v10.0.0-alpha1)

今度は PHPCompatibility v10.0.0-alpha1 をセットアップする.

{
    "name": "kakakakakku/php-compatibility-v10",
    "require-dev": {
        "phpcompatibility/php-compatibility": "10.0.0-alpha1"
    },
    "config": {
        "allow-plugins": {
            "dealerdirect/phpcodesniffer-composer-installer": true
        }
    }
}

実行すると非推奨になったコードを検出できた❗️

$ ./vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 8.2 src/index.php

-------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------
 4 | WARNING | Using ${var} in strings is deprecated since PHP 8.2, use {$var} instead. Found: ${name}
-------------------------------------------------------------------------------------------------------

関連情報

アップデートガイドもある📝

github.com