tap解釋
function tap($value, $callback = null)
{
/*
if (is_null($callback)) {
return new HigherOrderTapProxy($value);
}
*/
$callback($value);
return $value;
}
把 引數
傳遞給 閉包
,並且返回 引數
。
(關於 HigherOrderTapProxy
百度一下把,很簡單,不是本篇要吹的內容)
日常使用
一般都是跟物件打交道,這裡要說明下: 物件引用傳值的
例如:
$user = new User();
$user->id = 1;
$callback = function ($user){
$user->id = 999;
};
$callback($user);
echo $user->id; // 999
閱讀量增加
$article = tap(Article::find(1),function ($article) {
$article->increment('view');
});
流介面模式
public function setData($data)
{
// 正常
$this->data = $data;
return $this;
// tap
return tap($this,function ($hello) use ($data) {
// 這個$hello就是閉包外面的$this 閉包內的$this也是閉包外的$this(類)
$this->data = $data;
});
// php8寫法
return tap($this,fn() => $this->data = $data);
}
湊個數
本作品採用《CC 協議》,轉載必須註明作者和本文連結