見出し画像

PHP5.X⇒PHP7.X⇒PHP8.Xへのアップデート時に行ったこと

PHPで動作する当社の製品をバージョンアップした際の対応内容についてご紹介いたします。


■PHP5.X⇒PHP7.X

〇古い形式コンストラクタ

<?php
class foo {
    function foo() {
        echo 'I am the constructor';
    }
}
?>

上記のような記述をすべて __construct に置き換える必要がありました。

〇split関数の廃止

split関数は5.3で非推奨 となり、7.0で削除されました。
そのためsplit関数を使用している箇所をすべてexplode関数に置き換える必要がありました。

〇count関数

countのパラメータには配列またはカウントできるオブジェクトでなければなりません。
7.2からパラメータに不正な型を渡した場合に警告が発生するようになりました。

<?php
var_dump(count(null));
?>

7.2より前のバージョンだと上記の出力内容は
int(0)
となります。
7.2での出力はこのようになります。
Warning: count(): Parameter must be an array or an object that implements Countable in … on line xx
int(0)

count関数を使用している箇所をすべて確認し count(null) とならないように修正する必要がありました。

〇get_object_vars関数

7.4からget_object_vars関数を呼ぶとArrayObjectそのもの(またはそのサブクラス) のプロパティを常に返すようになりました。
以前はラップされた 配列/オブジェクト の値を返していました。
そのためget_object_vars関数で取得した値を利用するときにはstringへキャストするなどの対応が必要でした。

■PHP7.X⇒PHP8.X

PHP8へのバージョンアップでは主にVisual Studio Codeの拡張機能を使用しました。

〇Visual Studio Code

下記ページからインストーラーをダウンロードしてインストールします。
https://code.visualstudio.com/download

〇PHP Intelephense

Visual Studio Codeの拡張機能「PHP Intelephense」をインストールします。

〇setting.jsonの編集

setting.jsonを開き、phpバージョン(intelephense.environment.phpVersion)を追加します。

{
    "intelephense.environment.phpVersion": "8.1.0"
}

〇修正箇所の表示

ターミナルの「問題」に下位互換がないコードが表示されます。

この記事が気に入ったらサポートをしてみませんか?