PHPUnit + Whoops で Using ${var} in strings is deprecated, use {$var} instead エラー

経緯

久々に PHP の自分用にカスタマイズしたフレームワークのメンテナンスをしたところ、以下のエラーでテストが通らなかったのでメモ。

Whoops\Exception\ErrorException: Using ${var} in strings is deprecated, use {$var} instead

composer で PHPUnit とフレームワーク用の Whoops を入れている環境で、テスト環境は Docker で今まで php:7-alpine だったのを今回 php:8-alpine に上げました。

その環境で PHPUnit のテストを走らせたところ、エラーになってしまった、という話。

対処

原因はエラー文の通りですが、より詳細に書くと PHP 8.2 以降で文字列中の変数展開の構文で外側に $ がある ${var} という記述が非推奨になり、内側に $ がある {$var} という記述をするように促されているため。

そのため、実コード内の該当するコードを推奨された構文に書き換えることでテストが通るようになりました。

参考

php-8:alpine を動かすまで

パッケージをいくつか追加。

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。