概要
tapメソッドは第一引数を返却します。第一引数に何をしたいかは第二引数のクロージャに記述します
使用例1: ユーザーの名前を更新する
//$userにはnameを'hoge'にした後の値が入る
$user = tap(User::first(), function (User $user) {
$user->name = 'hoge';
$user->save();
});
使用例2:
第一引数から真偽値を返すメソッドを使用した後に第一引数から動的なメソッドを使用する
第一引数から動的なメソッドを発火したい場合は、第二引数を省略できます。
//before
$user = User::first();
$user->update([
'name' => 'hoge'
]);
$user->->notify('更新しました')
//after: update()は真偽値を返すが、更新後にUserモデルが持つ動的なメソッドを発火させる
$user = tap(User::first())->update([
'name' => 'hoge',
])->notify('更新しました');
エクストラ
Higher Order Messagesを使用した場合
Higher Order Messagesについては別途記事を書きます。
// before
$user = User::find(1);
$user->update($data);
$user->notify();
//after
tap(User::find(1))->update($data)->notify();
参考