Skip to main content

Wat is InteractsWithTime

Illuminate\Support\InteractsWithTime is een trait die berekeningen van tijd, vertraging en verstreken tijd bundelt. Binnen het Laravel-framework doen meer dan 40 klassen use InteractsWithTime;; hij wordt gebruikt in uiteenlopende componenten zoals cache, queue, console en databaseverbindingen.
De broncode staat in src/Illuminate/Support/InteractsWithTime.php. De trait bestaat uitsluitend uit protected methodes en is bedoeld om vanuit het binnenste van een klasse te worden aangeroepen.

Voorbeelden van gebruik in het framework

Uitleg van de methodes

secondsUntil() — resterende seconden ophalen

Geeft het aantal resterende seconden tot een opgegeven tijdstip of vertragingswaarde terug. Als argument kun je een DateTimeInterface, DateInterval of een geheel aantal seconden meegeven.
Als je een tijdstip in het verleden meegeeft, wordt 0 teruggegeven (nooit negatief).

availableAt() — de UNIX-timestamp waarop iets beschikbaar wordt

Geeft de UNIX-timestamp terug van de huidige tijd plus de vertraging. Wordt gebruikt voor het vertragen van queue-jobs en het berekenen van cachevervaltijden.
Zonder argument (standaard 0) geeft hij de timestamp van de huidige tijd terug.

parseDateInterval() — DateInterval omzetten naar DateTime

Als je een DateInterval-instantie meegeeft, wordt die omgezet naar een Carbon-instantie door hem bij de huidige tijd op te tellen. Een DateTimeInterface of integer wordt ongewijzigd teruggegeven.
secondsUntil() en availableAt() roepen deze methode intern aan.

currentTime() — UNIX-timestamp van de huidige tijd

Een eenvoudige wrapper die Carbon::now()->getTimestamp() teruggeeft. Wordt gebruikt als referentietijd voor secondsUntil().

runTimeForHumans() — uitvoeringstijd in leesbaar formaat

Zet het verschil tussen een met microtime(true) vastgelegde start- en eindtijd om in een leesbare string.
Onder de 1000 ms krijg je milliseconden met decimalen, zoals 42.15ms; vanaf 1000 ms krijg je het verkorte forHumans()-formaat van CarbonInterval (zoals 1s 234ms). Door als tweede argument een eindtijd mee te geven, kun je ook een al gemeten interval omzetten.

Toepassing in pakketontwikkeling

Uniforme TTL voor een cachedriver

Handig als je een methode wilt maken die als ttl van put(key, value, ttl) zowel een int, DateInterval als DateTime accepteert.

Verwerkingstijd tonen in consolecommando’s

Handig wanneer je in de handle() van een Artisan-commando de verwerkingstijd aan de gebruiker wilt tonen.

InteractsWithTime voor tests

Illuminate\Foundation\Testing\Concerns\InteractsWithTime is iets anders: die levert de travel*()-methodes om in testcases de tijd te manipuleren (wordt automatisch opgenomen in TestCase).
De namespace verschilt van Illuminate\Support\InteractsWithTime (het onderwerp van deze pagina), dus let op dat je ze niet door elkaar haalt.

Samenvatting

Als je een methode wilt maken die zowel een int, DateInterval als DateTimeInterface accepteert, hoef je met een simpele use van deze trait de conversielogica niet zelf opnieuw te implementeren.

Gerelateerde pagina’s

Laatst gewijzigd op 6 september 2026