intriro / clock
系统日期的简单包装器
2.0.0
2020-07-20 07:06 UTC
Requires
- php: >=7.4
README
PHP 的简单时钟抽象库。
动机
DateTime 实例的问题在于它们不可测试和模拟。它们始终依赖于系统日期和时间。因此,您绝不应该直接创建 DateTime 实例。
使用 Clock 接口,您可以切换实现方式,因此可以控制返回的 DateTime 实例。
安装
使用 Composer 安装。
composer require intriro/clock
实现
Clock
对象提供对当前日期和时间的访问。基本上,它只是一个返回代表当前日期和时间的 DateTimeImmutable 实例的对象。
使用 Clock 接口,您始终可以交换实现方式,并获得不依赖于系统时间的 DateTimeImmutable 实例。
该库提供了一个 Clock
接口和三个实现。
SystemClock
允许您访问系统日期和时间。它仅返回 new DateTimeImmutable('now')
,并且是默认实现。
ShiftedSystemClock
返回一个提供间隔的系统日期和时间。
FixedClock
返回预定义的固定日期和时间。
示例
class Event { /** * @var DateTimeImmutable */ private $date; public function hasPassed(Clock $clock): bool { if ($this->clock->now() > $this->date) { return true; } return false; } }