Re: [RFC] Time\Instant and Time\Clock
| From: | Tim Düsterhus | Date: | Wed, 07 Oct 2026 10:04:14 +0000 |
| Subject: | Re: [RFC] Time\Instant and Time\Clock | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-132825@lists.php.net to get a copy of this message | ||
Hi
On 2026-09-30 21:48, Tim Düsterhus wrote:
We have now made the========= Comment 5 ========= The RFC introduces a SystemClock class:Conceptually there is only one<?php final readonly class SystemClock implements \Time\Clock { public function __construct() {} /** * The current instant, at the resolution offered by the platform * clock, * which is generally coarser than nanoseconds. * * Returned values are not guaranteed to be monotonically * increasing across calls. */ public function now(): \Time\Instant {} } ?>Why is SystemClock not a Singleton? Can there be multiple different system clocks in practice? I believe a System Clock, with the emphasis on "System" is a System Wide clock. This clock is not bound to PHP, but to all processes running on the system, including Apache, shell-scripts, NGINX and others.SystemClockand internally eachSystemClockobject accesses the same clock source provided by the operating system. But you are making a good point here: Replacing the constructor with a static::get()method or similar would make that explicit and would also allow for reducing memory usage whenSystemClockobjects are obtained at different places in the code (instead of being pulled from a dependency injection container). I'll put this on my list to discuss with Derick (and am happy to receive naming suggestions for such a static getter).
SystemClock a singleton with a SystemClock::get() factory / getter. The constructor is private now.
Best regards
Tim Düsterhus