kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

PHP5.3 -> PHP8.1 のアップデートで行ったこと

php5.3からPHP8系へアップデートを実施した記録。

※ 結果として、最初に見積もりで想定できる内容ではなかった。かなり余裕をもった工数にすることが望ましい。

想定していた内容

mysql → mysqli

mysql関数 が削除されたためmysqliへ変更

split → explode

非推奨から削除されたため

classの__constructの宣言

クラス名と同じ関数ではなく、__constructへ

追加で修正した内容

0除算

WARNINGからDivisionByZeroErrorエラーをthrow

計算部分で割り算をおこなっている部分を見直し

連想配列の宣言されていないkeyへのアクセス

NOTICEからWARNINGに変更

エラーが出るたびにarray_key_existsかissetでチェック

undefined variable

変数宣言がない場合のエラーがNotice -> Warning

最初に宣言するように修正

mysqliのエラー時の挙動

throwになる挙動をエラー関数で取得に変更

// MySQLiのエラーレポートモードを設定
mysqli_report(MYSQLI_REPORT_OFF );

ただの関数内の$this削除

関数内で$thisを使用していたがclassでないため不要 7.1以降使えないため削除

@エラー抑制

完全に抑制できない。

try-catchやエラーにならないプログラムに修正

mb_convert_encording

適切な文字でない場合、WARNING から ValueErrorエラーをthrow

float から int への暗黙の変換は推奨されなくなりました

エラーがでたら修正

行わなかった対応

文字コードの対応をする必要がなかったが、php5.3あたりはEUC-JPだったりする。

DBの文字コードアップデートやソースコード文字コード対応も入ると大変なアップデートになる。

想定の3倍ぐらい修正したので、記録。