🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
PsrClockAdapter — adaptador de reloj PSR-20
Propósito
Envuelve cualquier Psr\Clock\ClockInterface en el contrato extendido del paquete: añade timestamp(), microtime(), timezone(), freeze(), withTimezone().
Para qué y cómo utilizarlo
Migración fluida: los relojes de otra biblioteca (symfony, lcobucci...) funcionan en todas las API del paquete: PsrClockAdapter::wrap($foreign).
Ejemplo
$foreign = new \Symfony\Component\Clock\NativeClock();
$clock = PsrClockAdapter::wrap($foreign);
$clock->timestamp(); // works on top of any PSR-20 clock
Antipatrones
Las primitivas baratas del adaptador materializan honestamente el momento del reloj interno — el SystemClock nativo es más rápido.
Ciclo de vida
flowchart LR
A[Any PSR-20 clock] --> B[PsrClockAdapter]
B --> C[Extended ClockInterface]
C --> D[TimeSpan / Deadline / decorators]
Comparación de la característica con análogos
| Aspecto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Adaptación de cualquier reloj PSR-20 | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| Contrato extendido sobre PSR | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Compatibilidad con los decoradores del paquete | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Instantánea freeze() de relojes ajenos | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Envoltura de cualquier objeto con now() público (legacy) | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Total | 🏆 5 | 1 | 0 | 0 | 2 | 0 |
← A la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano