先日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への主な変更点は公式サイトにドキュメントがあるので参照する。
コメント