Laravel 中強大的tap你用過麼

NO IMAGE

在本文,我們將討論 Laravel 中的 tap

上面的程式碼將接受一個引數,它將使用該引數呼叫一個匿名函式。在呼叫回撥函式後,它將返回引數。
讓我們看看我們如何以有意義的方式使用它。例如:

<?php
$photo = App\Photo::find(1);
return tap($photo, function($photo) {
$photo->validated = true;
$photo->save();
});

在上面的例子中,我們傳遞一個引數(照片模型)和一個回撥函式,該函式簡單地將 validated

回撥函式現在是可選的。你還可以鏈式使用引數中的多個方法,這裡其實也就是照片Model中支援的方法。例如

<?php
$photo = App\Photo::find(1);
return tap($photo)->update([
'validated' => 'true',
])

我們能夠將任何模型的方法通過 tap

在上面的程式碼中,target

現在讓我們嘗試在這個陣列上使用 tap

上面的程式碼將會輸出以下結果:

wallpaper
spring
mac
fruit

tap VS Pipe(管道)

在Laravel中,也有類似的方法叫管道。 它們在某種意義上是相似的,因為它們都在集合管道中使用。 tap

輸出結果為

wallpaper
fruit

另一方面,如果我們像這樣使用上面的程式碼:

return collect($photos)
->where('validated', true)
->tap(function ($validated) {
return $validated->where('extension', 'jpg')->pluck('file_name');
});
});

它將返回驗證設定為true的所有照片陣列。

結果為

0: {
file_name: "wallpaper",
validated: true,
extension: "jpg"
},
1: {
file_name: "spring",
validated: true,
extension: "png"
},
3: {
file_name: "mac",
validated: true,
extension: "png"
},
7: {
file_name: "fruit",
validated: true,
extension: "jpg"
}

更多PHP知識,請前往PHPCasts