Null合体演算子(??)は、null値に特化した三項演算子みたいなものです。
PHP8から、このNull合体演算子にthrowによる例外処理ができるようになりました。
理由はthrowの文法が『文』から『式』に変わったから。
これで、『nullだったら例外発生』の処理が1行でできるようになります。
もうif文はいらない。
まずはこのコードを見てください。
このコードはできるようでできません。throwは式に見えて文だから。if, forと同じ。
中括弧({})を使わず、セミコロン(;)で終わるのに式じゃないのがややこしい。
php74の実行結果
ちゃんと動くコードにするにはこうする必要がありました。
これがPHP8からは、Null合体演算子でも実行可能になります。throwの例外処理が文から式に変わったから。
php80の実行結果
これでもう、わざわざif文で書く必要はないですね?
このコードはこれから、けっこう見るようになるんじゃないかな?
ちなみに、Null合体演算子は、nullかどうか見るので、空文字('')はtrueになります。
php80の実行結果
PHP公式ドキュメント
また、PHP8では似たようなものにNullsafe演算子というものが追加されました。あわせてこちらもどうぞ。