tobento / service-clock
PSR-20 时钟用于 PHP 应用程序。
1.0.0
2023-06-22 14:36 UTC
Requires
- php: >=8.0
- psr/clock: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.0
This package is not auto-updated.
Last update: 2024-09-27 18:29:48 UTC
README
提供 PSR-20 时钟用于 PHP 应用程序。
目录
入门
使用以下命令添加运行中的时钟服务项目的最新版本。
composer require tobento/service-clock
要求
- PHP 8.0 或更高版本
亮点
- 框架无关,可与任何项目一起使用
- 解耦设计
文档
可用的时钟
系统时钟
系统时钟依赖于当前系统时间。如果未定义 timezone
参数,则使用 date_default_timezone_get
方法的时区。
use Tobento\Service\Clock\SystemClock; use Psr\Clock\ClockInterface; $clock = new SystemClock(); var_dump($clock instanceof ClockInterface); // bool(true)
已定义时区参数
use Tobento\Service\Clock\SystemClock; use DateTimeZone; $clock = new SystemClock( timezone: 'UTC' ); $clock = new SystemClock( timezone: new DateTimeZone('Europe/Berlin') );
冻结时钟
冻结时钟将始终返回相同的日期时间,适用于测试。如果未定义 now
参数,则使用 系统时钟 的当前时间。
use Tobento\Service\Clock\FrozenClock; use Psr\Clock\ClockInterface; $clock = new FrozenClock(); var_dump($clock instanceof ClockInterface); // bool(true) // Modify the clock returning a new instance. // Will accept all formats supported by DateTimeImmutable::modify() $clockNew = $clock->modify('+30 seconds'); // With a new timezone returning a new instance. $clockNew = $clock->withTimeZone(timezone: 'UTC');
已定义 now 参数
use Tobento\Service\Clock\FrozenClock; use Tobento\Service\Clock\SystemClock; use Psr\Clock\ClockInterface; use DateTimeImmutable; $clock = new FrozenClock( now: new DateTimeImmutable() ); // or from another clock: $clock = new FrozenClock( now: new SystemClock() );