morebec/orkestra-datetime

CakePHP/Chronos 扩展,增加了围绕 DateTime 操作的实用函数。

v2.5.6 2022-07-25 15:51 UTC

This package is auto-updated.

Last update: 2024-09-30 01:27:01 UTC


README

Orkestra DateTime 组件基于 cakephp/chronos,而 cakephp/chronos 又基于 nesbot/carbon,旨在将不可变性作为日期和时间的默认值。它提供了 ClockInterface 的概念,可以在项目中使用,以获取时间作为基础设施关注点,而不是直接访问时间,同时提供日期和时间范围实现。

安装

composer require morebec/orkestra-orkestra-datetime

然后确保已导入 composer 自动加载器

<?php
require 'vendor/autoload.php';

use Morebec\Orkestra\DateTime\ClockInterface;
use Morebec\Orkestra\DateTime\SystemClock;

/** @var ClockInterface $clock */
$clock = new SystemClock();
printf("Now: %s", $clock->now());

用法

ClockInterface

时钟接口用于集中获取当前日期/时间的位置。本质上,在代码的任意位置执行像 DateTime::now() 这样的操作会使测试和操作变得更加困难。作为一个与基础设施相关的概念,从时钟中获取时间比在任何地方访问它更有意义。

这可以允许在过去的或未来的系统上进行测试。

以下是 ClockInterface 的实现

  • SystemClock 基于系统时间的系统时钟实现。
  • FixedClock 始终返回相同固定日期时间的时钟实现,用于单元测试以更好地控制时间。
  • OffsetClock 在创建时返回特定定义偏移量的日期时间,就像它是当前时间一样。这在我们需要倒退时间或快速跳转到未来但仍然让时钟以实际时间流逝时很有用。

有关 DateDateTime 可用函数的更多信息,请参阅 cakephp/chronos 的文档。