tobento/service-clock

PSR-20 时钟用于 PHP 应用程序。

1.0.0 2023-06-22 14:36 UTC

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()
);

致谢