PSR-20 Clock-Interface 建议版本

0.1.7 2022-11-25 16:15 UTC

This package is auto-updated.

Last update: 2024-08-25 19:50:48 UTC


README

PSR-20 clock-interface 的实现

Total Downloads Latest Stable Version Latest Unstable Version

pipeline status

安装

composer require stella-maris/clock

使用

此接口允许注入提供时钟接口的任何一种实现。

use StellaMaris/Clock/CLockInterface;

final class PastChecker
{
    public function __construct(private ClockInterface $clock) {}
    
    public function hasDateTimeAlreadyPassed(DateTimeImmutable $item): bool
    {
        return $item < $this->clock->now();
    }
}

为什么

在框架互操作性小组(FIG)中,一个工作组于 2021 年开始创建一个 ClockInterface。该工作进展相当迅速,到 2021 年中旬,接口基本上已经最终确定。

那么,这个接口为何重要?

自 2021 年中旬以来,工作组没有进一步开展工作。所有对编辑者和赞助者的请求都没有得到任何回应。

因此,在官方工作组渠道进行大量讨论后,我决定通过在 packagist 上提供目前达成一致的接口作为单独的包来推出这个接口。

那么,当 PSR 接口提供时怎么办?

有两种可能性

  • 要么接口将像目前一样由 FIG 提供,那么这个接口将扩展 PSR-20,以便所有该接口的实现都将立即兼容 PSR20。
  • 或者 PSR20 接口将有所不同:那么所有当前实现将需要为 PSR20 兼容提供单独的实现,并且该接口将简单地与 PSR20 接口共存。

文档

有关接口的更多信息,请查看 PSR-20 文档,地址为 https://github.com/php-fig/fig-standards/blob/master/proposed/clock.mdhttps://github.com/php-fig/fig-standards/blob/master/proposed/clock-meta.md