【PHP】7.4から8.3にアップデート後、プログラム動作に不具合が発生し改変した事

PHP

先日CentOS7やUbuntuサーバーをPHP7.4から8.3にアップデートを実施。
その後各アプリケーションの動作チェックを実施すると不具合が発見され、一部プログラムの書き換えを行った。

PHP8からコンストラクタに変更点

コンストラクタ関係で変更があり、マニュアルから主なものを抽出すると
・クラス名と同じ名前のメソッドは、コンストラクタと解釈されなくなる
・コンストラクタの引数をプロパティへ昇格させる機能追加

結局PHP7以前は今まで、

final class MyClass {
private string $strProp;
private int $intProp;
public function __construct(string $strProp, int $intProp) {
$this->strProp = $strProp;
$this->intProp = $intProp;
}
}

このように書いていたものを、

final class MyClass {
public function __construct( private string $strProp, private int $intProp ) { }
}

このようにスッキリさせる事ができる。

以前のコードのままではエラーは出ないが、今回は戻り値が想定しているものと異なる結果となっていた。

まとめ

今回はコンストラクタ部のみ変更したが、PHP7からPHP8への主な変更点は公式サイトにドキュメントがあるので参照する。

コメント