On Sat, Jun 20, 2026, at 6:45 AM, ignace nyamagana butera wrote:
> 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

(Repeating here per Tim's request.)

I am 100% against a static method for adding durations.  That's entirely 
pointless.  Even if we're just using methods and not operators, $dur3 = 
$dur1->add($dur2) is the way to go.

--Larry Garfield

Reply via email to