経緯
久々に 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 を動かすまで
パッケージをいくつか追加。