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.
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.
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.
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 alsttl van put(key, value, ttl) zowel een int, DateInterval als DateTime accepteert.
Verwerkingstijd tonen in consolecommando’s
Handig wanneer je in dehandle() 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).
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.