1: | <?php |
2: | |
3: | declare(strict_types=1); |
4: | |
5: | /** |
6: | * This file is part of the Nexus framework. |
7: | * |
8: | * (c) John Paul E. Balandan, CPA <paulbalandan@gmail.com> |
9: | * |
10: | * For the full copyright and license information, please view |
11: | * the LICENSE file that was distributed with this source code. |
12: | */ |
13: | |
14: | namespace Nexus\Clock\Extension; |
15: | |
16: | use Nexus\Clock\InternalClock; |
17: | use Psr\Clock\ClockInterface; |
18: | |
19: | /** |
20: | * A trait to help write time-sensitive immutable classes. |
21: | * |
22: | * @property null|ClockInterface $clock |
23: | */ |
24: | trait ImmutableClockAware |
25: | { |
26: | /** |
27: | * Gets the current timestamp. |
28: | */ |
29: | private function now(): int |
30: | { |
31: | $clock = $this->clock ?? InternalClock::getCurrent(); |
32: | |
33: | return $clock->now()->getTimestamp(); |
34: | } |
35: | } |
36: |