Skip to main content

Wat is de InteractsWithData-trait

Illuminate\Support\Traits\InteractsWithData is een trait die “een gemeenschappelijke API voor array-achtige invoerdata” bundelt. De trait zelf vereist slechts twee abstracte methodes, all() en data(), en delegeert de logica voor het ophalen van de echte data aan elke klasse. In ruil daarvoor levert hij een verzameling veelgebruikte methodes:
  • Bestaanscontrole: has(), hasAny(), exists(), missing()
  • Leegtecontrole: filled(), isNotFilled(), anyFilled()
  • Voorwaardelijke uitvoering: whenHas(), whenFilled(), whenMissing()
  • Extractie: only(), except()
  • Typeconversie: string(), boolean(), integer(), float(), date(), enum(), collect()

Relatie met de Request-methodes

De Illuminate\Http\Request die je via de request()-helper krijgt, neemt InteractsWithData op via Concerns\InteractsWithInput. Daardoor wordt alledaagse toegang tot invoer zoals hieronder via de trait geleverd.
Request::get() is een Symfony-compatibele methode op de Request-klasse zelf. Ook in de broncode van Laravel 13 staat expliciet @deprecated use ->input() instead; de aanbevolen methode is input().

Belangrijkste implementaties in de Laravel-core

Klassen die InteractsWithData rechtstreeks gebruiken

Verwante implementaties met vergelijkbare verantwoordelijkheden

  • Illuminate\Session\Store implementeert zelf een vergelijkbare API met has(), get(), only(), except() enzovoort
  • Illuminate\Validation\Concerns\ValidatesAttributes levert de validatielogica; de invoertoegangs-API zelf is als een aparte verantwoordelijkheid van InteractsWithData ontworpen

Relatie tussen de trait en de belangrijkste klassen

Inbouwen in eigen klassen bij pakketontwikkeling

InteractsWithData is geschikt voor klassen in een pakket die “een invoerarray bewaren en een Laravel-achtige ophaal-API willen bieden”.
1

Maak een datacontainerklasse

2

Lees veilig met getypeerde accessors

Praktische use cases

  • Een option bag voor een externe API-client
  • Een normalisatielaag voor webhook-payloads
  • Een klasse die configuratie-overrides van een pakket oplost
Als je alleen all() en data() implementeert, hoef je de invoertoegangs-API niet telkens zelf te bouwen en houd je de onderhoudskosten laag.

Gerelateerde pagina’s

Laatst gewijzigd op 6 september 2026