[Laravel] Optionalヘルパーの便利な使い方
optional
helperは、Laravel5.5
で導入されました。このクラスは、オブジェクトに存在しないプロパティを参照した場合に発生するエラーを回避することができます。
一般的な利用方法は以下のように任意のオブジェクトに対して行います。
ユーザー情報を持つ$user
が存在しなかった場合にも、各プロパティへの参照はnull
が返却されます。
$user = App\User::find($id);
return optional($user)->name;
また、Laravel5.7
ではBladeオペレータのor
が削除される予定です。
PHP7で実装された??
オペレータを使って同等のことができますが、optional
を使用することで冗長をなくすことができます。
下記の二つのコードは同じ動作を行います。
// null coalesce
return $user->profile->twitter_id ?? null;
// optional
return optional($user->profile)->twitter_id;
そして、Laravel5.5.13
ではoptional
メソッドの第二引数にクロージャが渡せるようになりました。
これは第一引数のオブジェクトが存在する場合のみ、クロージャが実行されます。
return optional(User::find($id), function ($user) {
return TwitterApi::findUser($user->twitter_id);
});
optional
をうまく活用することで、より見やすいコーディングが可能になるでしょう。
Using the Laravel Optional Helper and the New Optional Closure - Laravel News