zorachka/clock

PSR-20 ClockInterface实现

安装: 604

依赖者: 1

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:项目

dev-main 2023-07-31 09:17 UTC

This package is auto-updated.

Last update: 2024-09-30 01:41:21 UTC


README

Zorachka Clock


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

Latest Version on Packagist Tests Analysis Total Downloads

安装

您可以通过composer安装此包

composer require zorachka/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 Zorachka\Container\ServiceProvider;
use Zorachka\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)。请参阅许可证文件以获取更多信息。