Laravelのoptionalへルパ関数が便利なことに気がついた

2024/01/17に公開

はじめに

これまでオブジェクトのnull判定は三項演算子、null合体演算子などで判定していたけど、
Laravelを使っているならoptionalへルパ関数を使った方がいいんじゃないってことを今更気づいたので少しメモを書いておきます。

環境

  • PHP 8.3.1
  • Laravel 10.40.0

optionalへルパ関数を使ってみる

これまで

$user = User::find(1);

$user ? $user->name : null;

$user->name ?? null;

optionalへルパ関数

$user = User::find(1);

optional($user)->name;

// 第2引数にクロージャを渡すことも出来る
optional($user, function (User $user) {
    return $user->name . 'さん';
});

optionalへルパ関数はnullしか返してくれないから、null合体演算子と組み合わせてnull以外を返す使い方もできる。

optional($user)->name ?? '名無し';

PHP8以降は使わないでも大丈夫だったりする

PHP8.0で追加されたnullsafe演算子があれば、optionalへルパ関数を使わないでも同じことができたりする。

$user = User::find(1);

$user?->name;

$user?->name ?? '名無し'; 

※参考記事
https://qiita.com/sgrs38/items/6f970c68b2d0170cdd2f

まとめ

本当に今更な感じですが、使ってみると書き方がシンプルになったような気がします。
optionalへルパ関数があれば三項演算子、null合体演算子を使わないってことはないですが、組み合わせて使うこともできるのでこれからはoptionalへルパ関数を使っていこうかなって思います。

懸念点として、nullsafe演算子が使えるようになったことで将来的に廃止される可能性もあるかもしれないですね。
まぁLaravel10の時点ではまだそんなこともないので今のところは使っていても大丈夫でしょう。

GitHubで編集を提案

Discussion