Qué es tap()
tap() es un helper que permite «usar un valor y devolverlo tal cual». Se utiliza cuando quieres intercalar un efecto colateral.
La implementación en Illuminate\Support\helpers.php es simple.
tap() ignora el valor de retorno de la callback. El resultado es siempre el valor original.Uso básico
El uso más habitual: recibir un valor, procesarlo y devolverlo tal cual.HigherOrderTapProxy para encadenar directamente llamadas a métodos.
Casos de uso frecuentes
Intercalar salida de depuración
Insertar logs o disparar eventos en medio de una cadena
Ejecutar solo el efecto colateral sin cambiar el retorno
Qué es el trait Tappable
Conuse del trait Illuminate\Support\Traits\Tappable añades el método tap() a tu clase.
tap().
Uso en el desarrollo de paquetes
Tappable es útil cuando quieres inyectar efectos colaterales en medio de una API fluida. Combinándolo con Macroable y Conditionable puedes construir builders extensibles al estilo Laravel.
1
Crea una clase fluida
2
Usa Macroable, Conditionable y Tappable juntos
- Trait Macroable
- Trait Conditionable
- VOICEVOX for Laravel — ejemplo práctico en el que
TalkAudioQueryoSongAudioQueryse ajustan contap()antes de llegar agenerate().
Ejemplos en el core de Laravel
tap() / Tappable se usan también dentro del propio Laravel.
Illuminate\Routing\RoutercombinaMacroableyTappable.- En
Router::respondWithRoute()se usatap($route)->bind(...)sin callback, devolviendo$routetras ejecutarbind(). - En
Router::prepareResponse()se dispara un evento tras convertir la respuesta contap(..., fn (...) => event(...)). - En
Illuminate\Testing\Fluent\Concerns\Hasse usa la cadena->tap(...)->first(...)->etc()para asistir en las aserciones.
tap() es un helper pequeño por sí mismo, pero combinado con Macroable y Conditionable facilita construir las cadenas de métodos claras y legibles típicas de Laravel.Próximos pasos
Trait Macroable
Aprende el diseño para añadir métodos propios a clases existentes.
Trait Conditionable
Aprende las cadenas con bifurcación condicional mediante
when() / unless().