morebec / orkestra-datetime
CakePHP/Chronos 扩展,增加了围绕 DateTime 操作的实用函数。
v2.5.6
2022-07-25 15:51 UTC
Requires
- php: >=7.4
- cakephp/chronos: ^2.0
Requires (Dev)
- ext-dom: *
- friendsofphp/php-cs-fixer: ^2.16
- phpstan/phpstan: ^0.12.7
- phpunit/phpunit: ^9.5
- symfony/var-dumper: 5.*
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
在创建时返回特定定义偏移量的日期时间,就像它是当前时间一样。这在我们需要倒退时间或快速跳转到未来但仍然让时钟以实际时间流逝时很有用。
有关 Date
和 DateTime
可用函数的更多信息,请参阅 cakephp/chronos 的文档。