nanaweb / clock
Clock object for object-oriented programming
v1.0.2
2020-05-26 13:18 UTC
Requires
- php: >=7.2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.11
- phpmd/phpmd: ^2.6
- phpstan/phpstan-shim: ^0.10
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: ^3.2
This package is auto-updated.
Last update: 2024-10-26 23:12:34 UTC
README
Install
$ composer require nanaweb/clock
Usage
now()
Inject to classes that needs current timestamp, and call $this->clock->now()
to get current timestamp.
<?php class SomeClass { private $clock; public function __construct(\Nanaweb\Clock $clock) { $this->clock = $clock; } public function getFiveHourLater() { /** @var \DateTimeImmutable $now */ $now = $this->clock->now(); return $now->add(new \DateInterval('PT5H')); // } }
today()
Inject to classes that needs current date, and call $this->clock->today()
to get current date.
<?php class SomeClass2 { private $clock; public function __construct(\Nanaweb\Clock $clock) { $this->clock = $clock; } public function getFiveDaysAgo() { /** @var \DateTimeImmutable $today */ $today = $this->clock->today(); return $today->sub(new \DateInterval('P5D')); // 00:00:00 of five days ago } }
why should I use Clock?
To test time-sensitive classes.
<?php class SomeClassTest extends TestCase { public function test_fiveHoursAgo() { $clockP = $this->prophesize(\Nanaweb\Clock::class); $clockP->now()->willReturn(new \DateTimeImmutable('2020-05-16 10:00:00'))->shouldBeCalled(); $SUT = new SomeClass($clockP->reveal()); $this->assertEquals('2020-05-16 15:00:00', $SUT->getFiveHoursLater()); } }