Was ist InteractsWithTime?
Illuminate\Support\InteractsWithTime ist ein Trait, der Berechnungen zu Zeit, Verzögerung und verstrichener Zeit bündelt. Innerhalb des Laravel-Frameworks verwenden über 40 Klassen use InteractsWithTime; — er kommt in einer breiten Palette von Komponenten wie Cache, Queue, Console oder Database Connection zum Einsatz.
Der Quellcode befindet sich unter
src/Illuminate/Support/InteractsWithTime.php. Er besteht ausschließlich aus protected-Methoden und ist darauf ausgelegt, klassenintern aufgerufen zu werden.Beispiele für die Nutzung im Framework
Erläuterung der Methoden
secondsUntil() — verbleibende Sekunden ermitteln
Gibt die Anzahl der Sekunden bis zu einem angegebenen Zeitpunkt bzw. Verzögerungswert zurück. Als Argument sind DateTimeInterface, DateInterval oder ein ganzzahliger Sekundenwert erlaubt.
0 zurückgegeben (nie negativ).
availableAt() — UNIX-Zeitstempel der Verfügbarkeit
Gibt einen UNIX-Zeitstempel zurück, der sich aus der aktuellen Zeit zzgl. einer Verzögerung ergibt. Wird für Job-Verzögerungen in der Queue und die Berechnung von Cache-Ablaufzeiten genutzt.
0) wird der aktuelle Zeitstempel zurückgegeben.
parseDateInterval() — DateInterval in DateTime umwandeln
Erhält die Methode eine DateInterval-Instanz, wird diese zur aktuellen Zeit addiert und als Carbon-Instanz zurückgegeben. DateTimeInterface oder Integer werden unverändert zurückgeliefert.
secondsUntil() und availableAt() rufen intern diese Methode auf.
currentTime() — aktueller UNIX-Zeitstempel
Ein schlichter Wrapper, der Carbon::now()->getTimestamp() zurückgibt. Wird als Referenzzeit für secondsUntil() verwendet.
runTimeForHumans() — Laufzeit in lesbarer Form
Wandelt die Differenz zwischen einem mit microtime(true) erfassten Start- und Endzeitpunkt in eine lesbare Zeichenkette um.
42.15ms zurückgegeben; ab 1000 ms verwendet Laravel das Kurzformat des CarbonInterval::forHumans() (etwa 1s 234ms).
Über das zweite Argument können Sie auch einen bereits gemessenen Zeitraum umwandeln.
Einsatz in der Paketentwicklung
Einheitliche TTL für Cache-Treiber
Nützlich, wenn Sie eine Methodeput(key, value, ttl) anbieten wollen, deren ttl sowohl int, DateInterval als auch DateTime akzeptiert.
Laufzeitanzeige in Console-Commands
Nützlich, um dem Nutzer in derhandle()-Methode eines Artisan-Commands die Verarbeitungszeit anzuzeigen.
InteractsWithTime für Tests
Illuminate\Foundation\Testing\Concerns\InteractsWithTime ist etwas anderes: Es stellt in Testfällen travel*()-Methoden zur Manipulation der Zeit bereit (und ist automatisch in TestCase eingebunden).
Illuminate\Support\InteractsWithTime (dem Thema dieser Seite) — verwechseln Sie beide bitte nicht.
Zusammenfassung
Wenn Sie eine Methode entwerfen wollen, die als Argument
int, DateInterval oder DateTimeInterface akzeptiert, sparen Sie sich mit use dieses Traits die erneute Implementierung der Konvertierungslogik.