Files
kulakpos_web/vendor/beste/clock/src/Clock/FrozenClock.php
eko54r b5e3a778ce
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 3m3s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 16s
Build, Push and Deploy / deploy-staging (push) Successful in 32s
Build, Push and Deploy / deploy-production (push) Has been skipped
Build, Push and Deploy / cleanup (push) Successful in 1s
allow vendord
2026-03-30 14:54:57 +07:00

48 lines
929 B
PHP

<?php
declare(strict_types=1);
namespace Beste\Clock;
use Beste\Clock;
use DateTimeImmutable;
use DateTimeZone;
use Psr\Clock\ClockInterface;
final class FrozenClock implements Clock
{
private DateTimeImmutable $frozenAt;
private function __construct(DateTimeImmutable $frozenAt)
{
$this->frozenAt = $frozenAt;
}
public static function at(DateTimeImmutable $time): self
{
return new self($time);
}
public static function withNowFrom(ClockInterface $clock): self
{
return new self($clock->now());
}
public static function fromUTC(): self
{
return new self(new DateTimeImmutable('now', new DateTimeZone('UTC')));
}
public function setTo(DateTimeImmutable $time): self
{
$this->frozenAt = $time;
return $this;
}
public function now(): DateTimeImmutable
{
return clone $this->frozenAt;
}
}