This commit is contained in:
2025-10-20 14:10:54 +02:00
parent 75ca8fd840
commit d2c1970ef8
732 changed files with 101915 additions and 2 deletions

View File

@@ -0,0 +1,59 @@
<?php
namespace Lcobucci\Clock;
use DateTimeImmutable;
use DateTimeZone;
use function interface_exists;
if (!interface_exists(\Lcobucci\Clock\Clock::class)) {
interface Clock
{
/** @return DateTimeImmutable */
public function now();
}
final class FrozenClock implements \Lcobucci\Clock\Clock
{
/** @var DateTimeImmutable */
private $now;
public function __construct(DateTimeImmutable $now)
{
$this->now = $now;
}
/** @return self */
public static function fromUTC()
{
return new self(new DateTimeImmutable('now', new DateTimeZone('UTC')));
}
public function setTo(DateTimeImmutable $now)
{
$this->now = $now;
}
public function now()
{
return $this->now;
}
}
final class SystemClock implements \Lcobucci\Clock\Clock
{
/** @var DateTimeZone */
private $timezone;
public function __construct(DateTimeZone $timezone)
{
$this->timezone = $timezone;
}
/** @return self */
public static function fromUTC()
{
return new self(new DateTimeZone('UTC'));
}
/** @return self */
public static function fromSystemTimezone()
{
return new self(new DateTimeZone(date_default_timezone_get()));
}
public function now()
{
return new DateTimeImmutable('now', $this->timezone);
}
}
}