tap函式的日常使用

lyxxxh發表於2021-05-11

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);
    }

湊個數

用tap來寫一些騷寫法

本作品採用《CC 協議》,轉載必須註明作者和本文連結
專心學習不瞎搞

相關文章