CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

PsrClockAdapter — адаптер PSR-20 часов

Назначение

Оборачивает любые Psr\Clock\ClockInterface в расширенный контракт пакета: добавляет timestamp(), microtime(), timezone(), freeze(), withTimezone().

Для чего и как применять

Плавная миграция: часы из другой библиотеки (symfony, lcobucci...) работают во всех API пакета: PsrClockAdapter::wrap($foreign). Принимается и легаси-объект без PSR-20 с публичным now(), возвращающим любой DateTimeInterface.

Пример

$foreign = new \Symfony\Component\Clock\NativeClock();
$clock = PsrClockAdapter::wrap($foreign);
$clock->timestamp();     // работает поверх любых PSR-20 часов

Анти-паттерны

Дешёвые примитивы адаптера честно материализуют момент внутренних часов — родной SystemClock быстрее.

Жизненный цикл

flowchart LR
    A[Any PSR-20 clock] --> B[PsrClockAdapter]
    B --> C[Extended ClockInterface]
    C --> D[TimeSpan / Deadline / decorators]

Сравнение возможности с аналогами

Аспект🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Адаптация произвольных PSR-20 часов✅✅❌❌✅❌
Расширенный контракт поверх PSR✅❌❌❌❌❌
Совместимость с декораторами пакета✅❌❌❌❌❌
Снимок freeze() чужих часов✅❌❌❌❌❌
Обёртка любого объекта с публичным now() (легаси)✅❌❌❌✅❌
Всего🏆 510020

← К списку возможностей


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano