bag2 / clock
v1.0.0
2022-11-25 16:41 UTC
Requires
- php: >=7.3
- psr/clock: ^1.0
Requires (Dev)
- cakephp/chronos: ^2.1
- nesbot/carbon: ^2.46
- phpstan/phpstan: ^1.9
Provides
This package is auto-updated.
Last update: 2024-08-25 20:12:43 UTC
README
PSR-20 时钟实现。
接口
这是PSR-20 Clock接口提供的唯一方法。
<?php namespace Psr\Clock; interface ClockInterface { /** * Returns the current time as a DateTimeImmutable Object */ public function now(): \DateTimeImmutable; }
与DateTime库的互操作性
今天,Carbon和Chronos被认为是扩展DateTime类的有用库。
它们都提供了从DateTimeImmutable派生的类,因此很容易得到适配器。
如果PSR定义了Clock接口,那么对于用户来说,将这些适配器与各自的库一起提供是很方便的。
测试中的DateTime
编写依赖于时间的函数的测试很困难。Clock接口是解决这个问题的方法之一。
然而,这要求应用程序移除new DateTime()
(不带参数)和时间函数(date()
、time()
、strtotime()
)。
其他选项包括php-timecop、Chronos::setTestNow()
、Carbon::setTestNow()
和rashidlaasri/travel。然而,它们不是面向对象的,因为它们依赖于全局状态(或静态属性)。