Re: [RFC] Duration class
| From: | ignace nyamagana butera | Date: | Sat, 20 Jun 2026 11:45:15 +0000 |
| Subject: | Re: [RFC] Duration class | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-131420@lists.php.net to get a copy of this message | ||
On Sat, Jun 20, 2026 at 1:01 PM Tim Düsterhus <tim@bastelstu.be> wrote:
> Hi
>
> Am 2026-06-19 12:25, schrieb ignace nyamagana butera:
> > However, I would advise against introducing Duration::add and
> > Duration::sub
> > methods. Instead, I would recommend providing a single method,
> > Duration::sum(Duration
> > ...$durations): self.
> >
> > Given that a Duration already carries a sign and may therefore be
> > either
> > positive or negative, the presence of separate add and sub methods
> > could
> > create an implicit and potentially misleading notion of directional
> > behavior.
> >
> > In contrast, a sum method using variadic arguments would allow multiple
> > Duration instances to be combined in a natural and consistent manner.
> > It
> > would also avoid implying any expectation regarding the resulting sign,
> > which may legitimately be either positive or negative depending on the
> > input values.
>
> Can you clarify if you expect the
sum() method to be a static
> method
> or an instance method? If it's a static method, what would you expect
> Duration::sum() (with an empty list of durations) to result in?
> Should
> it be an Error, Duration::fromSeconds(0), or perhaps something
> entirely different?
>
> Best regards
> Tim Düsterhus
>
> PS: Please don't forget to reply below the quoted parts; and to cut the
> quoted parts to the relevant portion.
>
Hi Tim,
I would make the method static and if no argument is given I would expect
an ArgumentCountError to be thrown just like with array_sum.
Best regards,
Ignace