Hey Tim,

On 30.06.26 19:04, Tim Düsterhus wrote:
To remain consistent with `bcdivmod()`, the function should return a 2-tuple (i.e. `array{0: int, 1: Duration}`). This makes destructuring very convenient:

    [$fullDurations, $remainder] = $oneHour->divideInto($sevenMinutes);

see https://news-web.php.net/php.internals/124098 for the previous discussion.

I don't plan to add `divideInto()` to the initial set of methods in PHP 8.6, but would be open to it if anyone feels having it right away is useful or necessary. Please speak up in that case. And please also do if you disagree with the divideBy() + divideInto() pair.

Best regards
Tim Düsterhus

This is a new OOP API, maybe we could prioritise DX over consistency with `bcdivmod()`? Can we please return a value object like "DurationDivision"?

```
final readonly class DurationDivision
{
    public int $factor; // or "quotient"
    public Duration $remainder;
}

$divisionResult = $oneHour->divideInto($sevenMinutes);

$divisionResult->factor // unlike in destructuring, fully optional
$divisionResult->remainder->seconds
```

Although you call the destructuring very convenient, I personally think it makes a more awkward API. Would love and prefer to see an VO here!

Nits:
- while not incorrect, I find `Time` for the namespace not ideal. As others proposed, I'd also rather go with "Temporal". - in the "Proposal" section example of the RFC text the `readonly` are redundantly on the class and properties; in the later example you only have it on the properties.

--

Cheers
Nick

Reply via email to