[Laravel] Optionalヘルパーの便利な使い方

optionalhelperは、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

© Xzxzyzyz