Tap, Tap, Tap

One of my favorite helpers methods in Laravel is tap. On first glance, this Ruby inspired function is pretty odd. Here is the basic implementation of the function:

As you can see, the function takes any argument and a callback / anonymous function. tap allows you to do something with the $value inside of the Closure and then return the $value. To see how it’s used, let’s look at how the Laravel framework itself uses tap. Check out the following method from Eloquent:

In this example, we’re creating a new Eloquent model, saving the model, and then returning that model instance back to the caller. The tap helper allows us to do this in one “block” of code since it always returns the model instance we provide.

In a recent version of Laravel 5.4, we introduced the ability to shorten some tap calls. This new implementation of tap can be seen here. Let’s take a look at an example:

In this example, we pass a single argument (a User model) to tap, and then we are able to chain any of that model’s methods onto the tap call. The update method normally returns a boolean; however, since we used the tap function, the update method will return the User model we tapped. This feature of tap makes it easy to force any method on an object to return the object itself.

While tap is a very simple helper, I find it often lets me write terse, one-line operations that would normally require temporary variables or additional lines. Let me know if you find any other interesting uses of tap!