bag2/clock

v1.0.0 2022-11-25 16:41 UTC

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库的互操作性

今天,CarbonChronos被认为是扩展DateTime类的有用库。

它们都提供了从DateTimeImmutable派生的类,因此很容易得到适配器。

如果PSR定义了Clock接口,那么对于用户来说,将这些适配器与各自的库一起提供是很方便的。

测试中的DateTime

编写依赖于时间的函数的测试很困难。Clock接口是解决这个问题的方法之一。

然而,这要求应用程序移除new DateTime()(不带参数)和时间函数(date()time()strtotime())。

其他选项包括php-timecopChronos::setTestNow()Carbon::setTestNow()rashidlaasri/travel。然而,它们不是面向对象的,因为它们依赖于全局状态(或静态属性)。

测试辅助类