🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
PsrClockAdapter — Adapter für PSR-20-Uhren
Zweck
Umschließt beliebige Psr\Clock\ClockInterface mit dem erweiterten Vertrag des Pakets: fügt timestamp(), microtime(), timezone(), freeze(), withTimezone() hinzu.
Wofür und wie zu verwenden
Sanfte Migration: Uhren aus einer anderen Bibliothek (symfony, lcobucci...) funktionieren in allen APIs des Pakets: PsrClockAdapter::wrap($foreign).
Beispiel
$foreign = new \Symfony\Component\Clock\NativeClock();
$clock = PsrClockAdapter::wrap($foreign);
$clock->timestamp(); // works on top of any PSR-20 clock
Anti-Patterns
Die günstigen Primitive des Adapters materialisieren ehrlich den Zeitpunkt der inneren Uhr — die native SystemClock ist schneller.
Lebenszyklus
flowchart LR
A[Any PSR-20 clock] --> B[PsrClockAdapter]
B --> C[Extended ClockInterface]
C --> D[TimeSpan / Deadline / decorators]
Funktionsvergleich mit Konkurrenten
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Adaptierung beliebiger PSR-20-Uhren | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| Erweiterter Vertrag über PSR hinaus | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Kompatibilität mit den Dekoratoren des Pakets | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
freeze()-Snapshot fremder Uhren | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Umhüllen beliebiger Objekte mit öffentlichem now() (Legacy) | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Gesamt | 🏆 5 | 1 | 0 | 0 | 2 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano