PHP8に対応させた
作業内容
オレオレフレームワークで動いているこのコンテンツにphp8.0の新機能を反映させた。
- コンストラクタ引数のプロパティ昇格(そんな使ってない)
- match式(そんな使ってない)
あとphp7.4で反映し忘れていたプロパティの型(結構使った)。名前付き引数に関してはめんどくさいのでやめた。
null合体演算子について
null合体演算子の機能自体はphp7.0から存在しているが、throwが『文』から『式』になったということで合わせて導入しようとしたがwarningを握りつぶしてしまうのは怖くないかいということでメモ。
ini_set("display_errors", "1");

error_reporting(32767);



$array = [];



$result = $array["bbbb"] ?? "nothing";

var_dump($result); //string(7) "nothing"

echo"<br>";

var_dump(error_get_last()); //NULL



$result = $array["bbbb"]; //Warning: Undefined array key "bbbb" in /home/z380/internet/yossoi/webroot/index.php on line 25

var_dump(error_get_last()); //array(4) { ["type"]=> int(2) ["message"]=> string(26) "Undefined array key "bbbb"" ["file"]=> string(44) "/home/z380/internet/yossoi/webroot/index.php" ["line"]=> int(25) }
以下は公式のコード。
個人的にarrayから要素を取り出すときはarray_key_exists()をフックしており、isset()はほぼ使わないので不思議な感触を持った。