Skip to main content

Wat is tap()?

tap() is een helper om “een waarde te gebruiken en diezelfde waarde ongewijzigd terug te geven”. Je gebruikt hem wanneer je een bijeffect wilt tussenvoegen. De implementatie in Illuminate\Support\helpers.php is eenvoudig.
tap() negeert de returnwaarde van de callback. De returnwaarde is altijd de oorspronkelijke waarde.

Basisgebruik

Het meest basale gebruik is: een waarde ontvangen, verwerken en ongewijzigd teruggeven.
Laat je de callback weg, dan krijg je een HigherOrderTapProxy terug, zodat je direct methodeaanroepen kunt doorketenen.

Veelvoorkomende toepassingen

Debugoutput tussenvoegen

Logging of events invoegen midden in een keten

Alleen een bijeffect uitvoeren zonder de returnwaarde te wijzigen

Wil je de returnwaarde bewerken, gebruik dan with() of een gewone variabeletoewijzing. tap() blijft het leesbaarst als je hem beperkt tot bijeffecten.

Wat is de Tappable-trait?

Door Illuminate\Support\Traits\Tappable te usen, voeg je een tap()-methode toe aan je klasse.
De trait biedt dus alleen een instantiemethode-versie van tap().

Toepassing in packageontwikkeling

Tappable is handig wanneer je halverwege een fluent API een bijeffect wilt tussenvoegen. In combinatie met Macroable en Conditionable maak je een uitbreidbare builder in Laravel-stijl.
1

Maak een fluente klasse

2

Combineer Macroable, Conditionable en Tappable

Gerelateerde pagina’s:

Gebruiksvoorbeelden in de Laravel-core

Ook in Laravel zelf worden tap() / Tappable daadwerkelijk gebruikt.
  • Illuminate\Routing\Router gebruikt Macroable en Tappable samen
  • In Router::respondWithRoute() wordt tap($route)->bind(...) zonder callback gebruikt, zodat na het uitvoeren van bind() nog steeds de oorspronkelijke $route wordt teruggegeven
  • In Router::prepareResponse() wordt na het converteren van de response met tap(..., fn (...) => event(...)) een event afgevuurd
  • In Illuminate\Testing\Fluent\Concerns\Has wordt assertie-ondersteuning geïmplementeerd met de keten ->tap(...)->first(...)->etc()
Op zichzelf is tap() een kleine helper, maar samen met Macroable en Conditionable bouw je er makkelijk de leesbare methodeketens mee die je vaak in Laravel ziet.

Volgende stappen

Macroable-trait

Leer het ontwerp waarmee je eigen methodes toevoegt aan bestaande klassen.

Conditionable-trait

Leer conditionele ketens met when() / unless().
Laatst gewijzigd op 6 september 2026