a50/clock

PSR-20 ClockInterface实现

维护者

详细信息

github.com/a50dev/clock

源代码

问题

安装次数: 1,288

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

v1.0.1 2024-05-10 05:00 UTC

This package is auto-updated.

Last update: 2024-09-10 05:43:50 UTC


README

A50 Clock


此包提供了PSR-20 ClockInterface的实现。

Latest Version on Packagist Tests Analysis Total Downloads

安装

您可以通过composer安装此包

composer require a50/clock

使用

将ClockInterface传递给需要获取当前日期并设置所需时区的方法

<?php

declare(strict_types=1);

namespace Project\Reviews\Application\AddReview;

use Psr\Clock\ClockInterface;
use Project\Reviews\Domain\Review;
// ...

final class Handler
{
    private ClockInterface $clock;

    public function __construct(
        ClockInterface $clock,
        // ...
    ) {
        $this->clock = $clock;
        // ...
    }

    public function __invoke(Command $command): void
    {
        $review = Review::add(
            // ...
            $this->clock->now(),
        );

        // ...
    }
}

或直接使用正确的时区

<?php

declare(strict_types=1);

$clock = new TimeZoneAwareClock(new DateTimeZone('Europe/Minsk'));
$now = $clock->now();

如果您使用ClockServiceProvider,则默认的ClockInterface由带有UTC时区的TimeZoneAwareClock实现。

您可以通过在配置设置中设置时区来更改时区。

<?php

declare(strict_types=1);

use A50\Container\ServiceProvider;
use A50\Clock\ClockConfig;

new class implements ServiceProvider {
    
    // ...

    /**
     * @inheritDoc
     */
    public static function getExtensions(): array
    {
        return [
            ClockConfig::class => static function ($config, ContainerInterface $container): stdClass {
                $config->withTimezone('Europe/Minsk');

                return $config;
            }
        ];
    }
}

测试

make test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅我们的安全策略

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件