cloud-castle / clock
Production-ready PHP 8.1+ package (CloudCastle Clock).
Requires
- php: >=8.1
- psr/clock: ^1.0
Requires (Dev)
- beste/clock: ^3.0
- deptrac/deptrac: ^3.0 || ^4.0
- ergebnis/clock: ^0.2 || ^1.0 || ^2.0
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.75
- icanhazstring/composer-unused: ^0.9
- infection/infection: ^0.29 || ^0.33
- lcobucci/clock: ^3.0
- nesbot/carbon: ^2.72 || ^3.0
- php-parallel-lint/php-parallel-lint: ^1.4
- phpmd/phpmd: ^2.15
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.12 || ^2.1
- phpstan/phpstan-deprecation-rules: ^1.2 || ^2.0
- phpstan/phpstan-phpunit: ^1.4 || ^2.0
- phpstan/phpstan-strict-rules: ^1.6 || ^2.0
- phpunit/phpunit: ^10.5 || ^11.5
- psalm/plugin-phpunit: ^0.19 || ^0.20
- rector/rector: ^1.2 || ^2.0
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.12 || ^4.0
- symfony/clock: ^6.4 || ^7.0
- vimeo/psalm: ^6.0
- webmozart/assert: ^1.11
Provides
This package is auto-updated.
Last update: 2026-07-19 13:46:00 UTC
README
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
CloudCastle Clock
Production-ready PHP 8.1+ package (CloudCastle Clock).
Установка
composer require cloud-castle/clock
Требуется PHP 8.1+.
Быстрый старт
<?php
use CloudCastle\Clock\Example;
// TODO: пример использования пакета
Возможности
- PSR-20 совместимые часы + 18 реализаций:
SystemClock,MockClock,FrozenClock,MonotonicClock,OffsetClock,ScaledClock,TruncatingClock,CallbackClock, адаптерPsrClockAdapter, трейтыClockAwareTrait/AdjustsTimeTrait. Duration,Stopwatch,DatePoint— интервалы, измерение времени, неизменяемый момент.- Нормализация таймзон, заморозка/сдвиг/масштаб времени для детерминированных тестов.
Сравнение с аналогами
Пять популярных аналогов, четыре оси. Интероперабельность подтверждена
tests/Integration/CompetitorInteroperabilityTest.php; производительность и память
измерены в изолированных процессах (100 000 вызовов now(), минимум из трёх прогонов, PHP 8.1).
Функциональность
| Возможность | 🏆 CloudCastle | symfony/clock | lcobucci/clock | beste/clock | ergebnis/clock | nesbot/carbon |
|---|---|---|---|---|---|---|
| PSR-20 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Frozen/Mock для тестов | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| Монотонные часы (без скачков) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Offset / Scaled / Truncating | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Duration + Stopwatch | ✅ | ❌ | ❌ | ❌ | ❌ | ⚠️ |
| Нормализация таймзон | ✅ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ |
| Внешние зависимости | ✅ 0 | 0 | 0 | 0 | 0 | много |
| Покрытие | 🏆 полное | высокое | базовое | базовое | базовое | иное (дата-либа) |
Производительность
| Пакет | Время (100 000× now()) | Итог |
|---|---|---|
| 🏆 CloudCastle | 648 мс | быстрейший |
| lcobucci/clock | 648 мс | наравне |
| ergebnis/clock | 649 мс | наравне |
| symfony/clock | 959 мс | на 48% медленнее |
| beste/clock | 1 497 мс | в 2,3× медленнее |
| nesbot/carbon | 7 285 мс | в 11× медленнее |
Безопасность и корректность
| Свойство | 🏆 CloudCastle | symfony | lcobucci | beste | ergebnis | carbon |
|---|---|---|---|---|---|---|
Неизменяемый момент (DateTimeImmutable) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Монотонность (защита от скачка часов) | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Детерминированные тесты (freeze/mock) | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| Явная нормализация таймзоны | ✅ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ |
| Итог | 🏆 максимум | высокий | средний | средний | средний | средний |
Использование памяти
| Пакет | Пиковая память | Итог |
|---|---|---|
| 🏆 CloudCastle | 7 258 KB | минимум (наравне с лёгкими) |
| symfony / lcobucci / beste / ergebnis | 7 258 KB | наравне |
| nesbot/carbon | 10 895 KB | +50% памяти |
Вывод: CloudCastle Clock — самый быстрый, самый лёгкий и функционально
богатейший (18 реализаций против одного SystemClock у большинства аналогов).
Разработка
composer install
composer check # линтеры + статический анализ + тесты
composer fix # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci # полный CI-пайплайн локально
Полный список команд с описаниями: composer run-script --list.
Документация
- Репозиторий: https://gitverse.ru/cloud-castle/clock
- История изменений: CHANGELOG.md
- Как внести вклад: CONTRIBUTING.md
- Кодекс поведения: CODE_OF_CONDUCT.md
- Политика безопасности: SECURITY.md
Лицензия
MIT © CloudCastle (alex-4-17@yandex.ru)
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano