-
Notifications
You must be signed in to change notification settings - Fork 0
Quick start
github-actions[bot] edited this page Jul 14, 2026
·
1 revision
composer require cloudcastle/clockТребуется PHP 8.1+. Единственная runtime-зависимость — psr/clock.
<?php
declare(strict_types=1);
use CloudCastle\Clock\SystemClock;
$clock = SystemClock::utc(); // кэшированный UTC-экземпляр
$clock->now(); // DateTimeImmutable
$clock->timestamp(); // int — без создания объектов
$clock->microtime(); // float — секунды.микросекундыuse Psr\Clock\ClockInterface;
final class InvoiceService
{
public function __construct(private readonly ClockInterface $clock) {}
public function issue(): Invoice
{
return new Invoice(issuedAt: $this->clock->now());
}
}use CloudCastle\Clock\MockClock;
$clock = MockClock::from('2026-01-01 00:00:00', 'UTC');
$clock->sleep(3600.0); // мгновенно: +1 час виртуального времени
$clock->now()->format('H:i'); // 01:00
$clock->advance(90.5); // сдвиги с точностью до микросекунды
$clock->modify('next monday');
$clock->rewind(new \DateInterval('P1D'));use CloudCastle\Clock\Clock;
use CloudCastle\Clock\ClockHolder;
ClockHolder::set(MockClock::from('2026-01-01', 'UTC')); // bootstrap теста
Clock::now(); // из любого места кода
Clock::now('+1 hour'); // DatePoint с модификатором
ClockHolder::reset(); // tearDown- Возможности — страница на каждую фичу со схемой и жизненным циклом.
- Примеры — сквозные сценарии.
- Сравнение с аналогами — таблицы фич, скорости и памяти.
CloudCastle Clock · · PHP 8.1+
GitHub · Packagist · Releases · Discussions · Issues
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)