On Sat, Jun 20, 2026 at 1:01 PM Tim Düsterhus <[email protected]> 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

Reply via email to