a50 / clock
PSR-20 ClockInterface实现
v1.0.1
2024-05-10 05:00 UTC
Requires
- php: ^8.1
- a50/container: ^1.0
- psr/clock: ^1.0
- webmozart/assert: ^1.11
README
A50 Clock
此包提供了PSR-20 ClockInterface的实现。
安装
您可以通过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)。有关更多信息,请参阅许可证文件。