-
Notifications
You must be signed in to change notification settings - Fork 0
Features
github-actions[bot] edited this page Jul 14, 2026
·
1 revision
Каждая возможность пакета описана на отдельной странице: принцип работы, примеры, плюсы/минусы, рекомендации и сравнение с аналогами по этой конкретной фиче.
| Фича | Класс | Одной строкой |
|---|---|---|
| Системные часы | SystemClock |
Продакшн-время: системная зона, UTC или любая другая |
| Замороженные часы | FrozenClock |
Время стоит — детерминированные тесты |
| Тестовые часы | MockClock |
Виртуальный sleep() без блокировки процесса |
| Монотонные часы | MonotonicClock |
Иммунитет к переводу системного времени |
| Часы на callback | CallbackClock |
Произвольный источник времени из замыкания |
| Фича | Класс | Одной строкой |
|---|---|---|
| Смещение времени | OffsetClock |
«Завтра» и «вчера» поверх любых часов |
| Масштаб времени | ScaledClock |
Время течёт в N раз быстрее или медленнее |
| Усечение моментов | TruncatingClock |
Округление вниз до секунды/минуты/часа/суток |
| Фича | Класс | Одной строкой |
|---|---|---|
| Глобальный слот и фасад |
ClockHolder, Clock
|
Одна точка подмены времени во всём приложении |
| Трейт внедрения | ClockAwareTrait |
Часы в сервисе: DI-инъекция с фолбэком на слот |
| Секундомер | Stopwatch |
Замеры длительностей на монотонном таймере |
| DatePoint | DatePoint |
Момент от часов приложения, исключения вместо false |
| Адаптер PSR-20 | PsrClockAdapter |
Чужие часы получают весь расширенный контракт |
-
freeze()у всех часов — снимок момента любых часов (в т.ч. декорированных и сторонних через адаптер) в управляемыйFrozenClock. -
PSR-20 везде: каждая реализация подставляется в любой код, ожидающий
Psr\Clock\ClockInterface. -
Расширенный контракт:
timestamp()иmicrotime()отдают время без создания объектов дат — дёшево для горячих путей. -
withTimezone()у всех часов — копия в другой таймзоне; декораторы при этом сохраняют связь с живыми внутренними часами. -
Валидация на границе: мусорные строки дат/зон/модификаторов и null-байты отклоняются типизированным
InvalidClockValueException; управляющие символы в сообщениях ошибок экранируются.
CloudCastle Clock · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)