🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
FAQ
Чем пакет отличается от symfony/clock? Суперсет: помимо системных/мок-/монотонных часов — декораторы смещения, масштаба и усечения, шаговые часы и очередь, TimeSpan, Deadline, Stopwatch, дешёвые timestamp()/microtime(). А также CalendarDate — календарь уровня Carbon с локализацией. Лёгкие зависимости: psr/clock и cloud-castle/inflector (без polyfill-ов и ICU).
Заменяет ли он Carbon? Да, для большинства сценариев. CalendarDate даёт Carbon-паритетный календарный API: арифметику месяцев/лет с контролем переполнения (addMonthsNoOverflow()), предикаты, разницы, навигацию, форматтеры, детерминированный парсинг относительных строк и diffForHumans() на 6 языках без ICU/ext-intl. Единственное, чего нет, — тесная интеграция с Laravel (фасады, Eloquent-касты дат).
Почему TimeSpan не принимает месяцы? Абсолютная длительность месяца не определена (28–31 день), поэтому TimeSpan — это точная длительность в наносекундах. Для календарной арифметики месяцев/лет используйте CalendarDate (addMonthsNoOverflow(), addYears()).
Потокобезопасен ли ClockHolder? Как и любое статическое состояние PHP — в пределах одного процесса. В swoole/parallel-окружениях внедряйте ClockInterface явно.
Насколько дорог now()? На уровне лучших аналогов (см. Сравнение); timestamp() заметно дешевле, чем now()->getTimestamp() у любых часов.
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano