Skip to main content

Wat is Context?

De Context-functionaliteit van Laravel is een mechanisme om informatie vast te leggen en te delen over requests, queue-jobs en commando-uitvoeringen heen. Wanneer je informatie toevoegt via de Illuminate\Support\Facades\Context-facade, wordt die informatie automatisch toegevoegd aan alle logregels die je applicatie wegschrijft. Hierdoor kun je duidelijk onderscheid maken tussen informatie die je aan individuele log-aanroepen meegeeft en de gedeelde informatie die Context bewaart. Dit is vooral nuttig voor tracing in gedistribueerde systemen en architecturen met queues.

Propagatieflow van de context

Basisgebruik

De meest typische toepassing is het instellen van een trace_id in middleware. Die wordt daarna automatisch opgenomen in alle volgende logregels.
1

Maak een middleware

2

Voeg een trace-ID toe aan de Context

3

Registreer de middleware

Registreer hem als globale middleware in bootstrap/app.php.
Na deze configuratie worden url en trace_id automatisch toegevoegd aan logs die je in controllers of services wegschrijft.

Schrijven naar de context

add — een waarde toevoegen

add overschrijft bestaande sleutels. Wil je alleen toevoegen als de sleutel nog niet bestaat, gebruik dan addIf.

increment / decrement — tellers beheren

Speciale methoden om numerieke waarden te verhogen of te verlagen. Met het tweede argument geef je de stapgrootte op.

when — voorwaardelijk toevoegen

Met de when-methode kun je verschillende data toevoegen afhankelijk van of de voorwaarde true of false is.

push — toevoegen aan een stack

Context ondersteunt “stacks” die data in lijstvorm bewaren. Met push stapelt de data zich op in de volgorde waarin je hem toevoegt.
Een voorbeeld waarin de uitvoeringsgeschiedenis van queries op een stack wordt bijgehouden:

De context ophalen

get / all

only / except — slechts een deel ophalen

pull / pop — ophalen en verwijderen

pull haalt de waarde van een sleutel op en verwijdert die tegelijkertijd uit de context.
Gebruik pop om de laatste waarde van een stack te halen.

remember — instellen en teruggeven als de sleutel niet bestaat

has / missing — controleren of een sleutel bestaat

has geeft true terug, zelfs als er null is opgeslagen. Het controleert alleen of de sleutel geregistreerd is.

Context verwijderen

Verwijder een sleutel met forget.

Context met scope

Met de scope-methode kun je de context tijdelijk wijzigen tijdens de uitvoering van een closure; daarna wordt automatisch de oorspronkelijke toestand hersteld. Dit is handig in tests of lokale bewerkingen waarbij je tijdelijk extra informatie in logs wilt opnemen.
Als je binnen de scope een object wijzigt, is die wijziging ook buiten de scope zichtbaar. Bij primitieve waarden is er geen probleem.

Hidden context

Data die je niet in logs wilt laten verschijnen (wachtwoorden, API-sleutels, persoonsgegevens, enz.) sla je op in de hidden context. Deze data is niet op te halen met de gewone get-methode; je kunt er alleen bij via speciale methoden zoals getHidden.
De hidden context heeft dezelfde set methoden als de gewone context.

Doorgeven aan queue-jobs

Wanneer je een job naar de queue dispatcht, wordt de huidige context automatisch geserialiseerd en opgenomen in de payload van de job. Bij het uitvoeren van de job wordt de oorspronkelijke context hersteld, zodat de trace_id die je bij het request hebt toegevoegd automatisch wordt doorgegeven aan de logs op de queue.
Je ziet dat de trace_id van het request ook in de logs op de queue is opgenomen.

Dehydrating — aanpassen bij het verzenden van een job

Met Context::dehydrating kun je de context bewerken vlak voordat de job wordt verzonden. Dit gebruik je bijvoorbeeld als je de locale, bepaald door de Accept-Language-header, aan de queue wilt doorgeven.
Gebruik binnen de dehydrating-callback niet de Context-facade, maar werk alleen met de $context-repository die aan de callback wordt doorgegeven. Als je de facade gebruikt, wijzig je de context van het huidige proces.

Hydrated — herstellen bij het uitvoeren van een job

Met Context::hydrated kun je logica toevoegen op het moment dat de context wordt hersteld, vlak voordat de job wordt uitgevoerd. Bijvoorbeeld om de opgeslagen locale weer in de configuratie te zetten:
Gebruik ook binnen de hydrated-callback niet de Context-facade, maar werk alleen met de doorgegeven $context-repository.

Samenvatting

Omdat de hidden context niet in logs verschijnt, kun je hier veilig de volgende soorten data opslaan:
  • Sessie-ID’s en gebruikers-ID’s (als je die niet in logs wilt)
  • API-sleutels en authenticatietokens
  • Locale en configuratiewaarden (die je wilt doorgeven aan de queue, maar niet in logs nodig hebt)
  • Interne vlaggen en statussen
  1. Locale doorgeven: sla app.locale op in de hidden context met dehydrating en herstel hem met Config::set in hydrated.
  2. Authenticatiegegevens propageren: zorg dat gegevens van de geauthenticeerde gebruiker uit het request ook beschikbaar zijn in queue-jobs.
  3. Tenant-ID: deel de tenant-identifier over de queue heen in multi-tenant-applicaties.
Laatst gewijzigd op 6 september 2026