Cos’è InteractsWithTime
Illuminate\Support\InteractsWithTime è un trait che raccoglie i calcoli di tempo, ritardo e durata. All’interno del framework Laravel oltre 40 classi usano use InteractsWithTime;: è impiegato in un’ampia gamma di componenti come cache, queue, console e connessioni al database.
Il codice sorgente si trova in
src/Illuminate/Support/InteractsWithTime.php. È composto solo da metodi protected e si presuppone l’uso dall’interno della classe.Esempi di utilizzo nel framework
Descrizione dei metodi
secondsUntil() — ottiene i secondi rimanenti
Restituisce i secondi rimanenti fino al datetime o al ritardo indicato. L’argomento può essere DateTimeInterface, DateInterval o un intero di secondi.
0 (non diventa negativo).
availableAt() — timestamp UNIX di disponibilità
Restituisce il timestamp UNIX ottenuto sommando il ritardo all’istante corrente. È usato per calcolare il delay dei job in coda e le scadenze della cache.
0) restituisce il timestamp dell’istante corrente.
parseDateInterval() — converte DateInterval in DateTime
Se riceve un’istanza DateInterval, la aggiunge all’istante corrente e restituisce un’istanza Carbon. DateTimeInterface e i valori interi vengono restituiti così come sono.
secondsUntil() e availableAt() chiamano internamente questo metodo.
currentTime() — timestamp UNIX dell’istante corrente
Semplice wrapper che restituisce Carbon::now()->getTimestamp(). È usato come istante di riferimento in secondsUntil().
runTimeForHumans() — durata di esecuzione in formato leggibile
Converte in una stringa leggibile la differenza tra l’istante iniziale e quello finale registrati con microtime(true).
42.15ms; da 1000ms in su usa la forma abbreviata forHumans() di CarbonInterval (1s 234ms, ecc.).
Passando l’istante finale come secondo argomento puoi convertire un intervallo già misurato.
Utilizzo nello sviluppo di pacchetti
Uniformare il TTL nei driver di cache
Utile per creare metodi comeput(key, value, ttl) che accettano int, DateInterval o DateTime come ttl.
Mostrare il tempo di esecuzione di un comando console
Puoi usarlo nell’handle() di un comando Artisan per mostrare all’utente il tempo di elaborazione.
InteractsWithTime per i test
Illuminate\Foundation\Testing\Concerns\InteractsWithTime è una cosa diversa: fornisce i metodi travel*() per manipolare il tempo nei test (viene automaticamente incluso in TestCase).
Illuminate\Support\InteractsWithTime (oggetto di questa pagina): il namespace è diverso.
Riepilogo
Se vuoi creare metodi che accettino indifferentemente
int, DateInterval o DateTimeInterface, basta use di questo trait e non dovrai reimplementare la logica di conversione.