Re: [RFC] Duration class

From: Date: Tue, 23 Jun 2026 00:36:01 +0000
Subject: Re: [RFC] Duration class
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-131488@lists.php.net to get a copy of this message
On Thu, Jun 18, 2026, 06:49 Tim Düsterhus <tim@bastelstu.be> wrote: > Hi > > Derick and I are proposing the introduction of a new > Time\Duration > class to represent “stop-watch” or “egg-timer” durations to improve the > developer experience for APIs taking a timeout. We are specifically > targeting PHP 8.6 for this RFC, since part of the motivation is > improving the API of the new “Polling API” that already landed in PHP > 8.6 (https://wiki.php.net/rfc/poll_api) before the “backwards > compatibility” door closes with the feature freeze in two months. > > This RFC is also intended to be a first part of a modernized date and > time API in PHP, while being useful on its own. To that extent and given > the deadline we hope to make, the proposed API is intentionally minimal > and focused on functionality that we are relatively certain to: > > 1. Be correct, or > 2. be requirement for future additions that cannot later be added > without breaking compatibility. > > We would therefore ask to keep the discussion focused on actual issues > rather than additional “convenience functionality” that might require > extensive discussion or thought. > > All that said, you can find the RFC at: > https://wiki.php.net/rfc/duration_class. It hopefully includes > all the > important explanation and also provides a rationale as to why we made > the design decisions we made. > > Best regards > Tim Düsterhus > Hi Tim and Derick, I like where you're going with this, but I have a couple of notes: 1. Are there other classes planned for the \Time namespace? I think we should avoid using root namespaces and instead decide on a common namespace, so something like \Std\Time or \Php\Time. Although I realized that topic is a bit above this particular RFC, but worth considering for internals as more root namespaces are added. 2. Since the class is marked final (why?), I would recommend we also create a DurationInterface and use _that_ as the type wherever it is used. This would alleviate some of the concerns people have with making it final. For example, see popular packages like \Carbon\Carbon extends \DateTime and implements \DateTimeInterface. Thanks, Peter

« previous php.internals (#131488) next »