管道 Laravel collection 中的 tap 方法,tap VS Pipe( 二 )


如果没有给出回调函数 , 因为它是可选的 , Laravel将返回 HigherOrderTapProxy 的新实例 。在 HigherOrderTapProxy 类中定义了调用魔术方法 。调用魔术方法是由语言动态调用的(所谓的方法在类中没有定义) 。因为除了调用魔术方法 , HigherOrderTapProxy 类中没有定义方法 , 所以每次使用 tap 函数任何方法调用时都会调用它 。在调用魔术方法中 , 我们的更新方法或任何我们调用的方法将被参数调用 , 并且它将返回我们最初传递给 tap 函数的参数 。
这里是 HigherOrderTapProxy 类中调用魔术方法的实际内容 。
// vendor/laravel/framework/src/Illuminate/Support/HigherOrderTapProxy.phppublic function __call($method, $parameters){$this->target->{$method}(...$parameters);return $this->target;} 【管道 Laravel collection 中的 tap 方法,tap VS Pipe】在上面的代码中 , target 属性是我们在tap中传递的参数 。