On Mon, Jun 29, 2026 at 10:16 PM Tim Düsterhus <[email protected]> wrote:
> Hi > > Am 2026-06-22 19:37, schrieb Tim Düsterhus: > >> Oof. Naming. > >> The only term I can find that is specifically about dividing one > >> duration by another is "beat", but that's definitely domain-specific. > >> > >> 'periodCount' or 'countPeriods' come to mind. Since in 'n/d' we're > >> counting how many times duration 'd' occurs during duration 'n' we're > >> basically multiplying the duration by frequency '1/d'; the inverse of > >> the frequency - 'd' itself - is called the period. Which word is also > >> used for "named subdivision of historical time", "class-sized > >> subdivision of a school day", and so on. > >> > >> The biggest hangup with that name is that it doesn't explicitly state > >> that it returns the remainder as well. periodParts? periodDivide? > > > > Thank you for the suggestions. I quite like period. I'll also check > > with Derick if he has any good ideas (and regarding the Duration > > divided by Duration bit in general). > > Derick mentioned how “period” might not be an ideal term, because it's > something that the ISO standard moved away from. After having chatted > with him about this, I would agree that it would possibly be confusing > to mix “technical terminology” with “colloquial terminology” and might > raise questions about what the difference between “Duration” (class > name) and “Period” (method name) is when other languages call “Period” > what we call “Duration”. > > For `chunked…()` as suggested elsewhere in the thread, the implied > return type would be `list<Duration>` (i.e. > Duration::fromMinutes(50)->chunkedBy(Duration::fromMinutes(20)) === > [Duration::fromMinutes(20), Duration::fromMinutes(20), > Duration::fromMinutes(10)]`), since that would be consistent with > `array_chunk()` and chunking in other programming languages. > > Unless we come up with a genius idea, we might defer both divisions to > later and ship PHP 8.6 with just addition, subtraction and > multiplication - for that the question of add/sub vs sum() would still > be open (see: https://news-web.php.net/php.internals/131504). > > Best regards > Tim Düsterhus > How about this Duration::fromHours(5)->dividedBy(5); //returns Duration::fromHours(1); and Duration::fromHours(50->dividedInto(Duration::fromHours(1)); // returns ['factor' => 5, 'remainder' => Duration::fromSeconds(0)]; Duration::dividedInto in my example returns an array but I would have no issue if it would return a DTO instead. This way the naming seems easy to remember IMHO - "by" -> integer, - "into" -> duration and it reads naturally I think. Best regards, Ignace
