この記事には広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
Laravelでコーディングしているときに、ライブラリのソースを見ていたら以下のような実装を発見しました。
$return_url = $returnUrl ?? route('home'),
このクエスチョンが2つならんだプログラムを私は今まで知りませんでした。
果たしてreturn_urlにはどうゆう結果が格納されるのか?
「PHP ??」 でグーグル検索すると「PHPとは」という検索ワードで実行したような検索結果が表示されてしまいます。
「PHP ??」 でグーグル検索すると「PHPとは」という検索ワードで実行したような検索結果が表示されてしまいます。
このphp ??(クエスチョンマーク演算子が2個)の正体はタイトル通り
null合体演算子
という演算子でした。
私は3項演算子は大好きでよく使っていましたが、null合体演算子の存在は知りませんでした。
PHPではPHP 7以降でnull合体演算子??を利用できます。
$result = $hoge1 ?? $hoge2
// hoge1がNULLでない場合はhoge1がresultに格納されます
// hoge1がNULLの場合は代わりに右辺のhoge2をresultに格納
上記の場合、hoge1がNULLでない場合はhoge1がresultに格納されます。
hoge1がNULLの場合は代わりに右辺のhoge2をresultに格納してくれます。
つまり、左辺の式の結果がNULLでなければその結果をそのまま利用したい時に便利です。
null合体演算子を知らないときは3項演算子で以下のようにやってました。
// 3項演算子だとhoge1が2回登場して美しくない
// hoge1がNULLならhoge2を、hoge1がNULLではないならhoge1を返却
$result = isset($hoge1) ? $hoge1 : $hoge2
// NULL合体演算子を使えばシンプルになります。
$result = $hoge1 ?? $hoge2