PHP 8.6 : la nouvelle classe Duration pour manipuler des durées de temps - Dév. Web - ShevArezo`Blog
PHP 8.6 introduit une nouvelle classe Duration dans l'espace de noms Time, conçue pour représenter des durées de temps sous forme de chronomètre, comme des timeouts ou des délais de retry, sans lien avec une date calendaire. Elle comble un vide dans PHP, où ces valeurs étaient auparavant gérées par des entiers bruts, source d'ambiguïtés (secondes vs millisecondes). Contrairement à DateInterval, axée sur les écarts entre dates, Duration offre une précision jusqu'à la nanoseconde et est immuable, évitant les modifications accidentelles.
La classe propose des méthodes statiques pour créer des instances, comme fromSeconds(), fromMilliseconds() ou fromHours(), et expose trois propriétés publiques en lecture seule : $seconds, $nanoseconds et $negative. Cette dernière permet de gérer les durées négatives de manière claire, simplifiant les calculs d'absolue. Les opérations arithmétiques, comme la multiplication ou l'addition, sont effectuées via des méthodes dédiées (ex. multiplyBy()), garantissant l'immuabilité des objets.
Duration a été pensée pour améliorer l'ergonomie de l'API de polling de PHP 8.6, mais son utilité s'étend au-delà, offrant une solution robuste pour manipuler des durées dans du code applicatif. Son design final et readonly assure une gestion sécurisée et explicite des laps de temps, réduisant les risques d'erreurs liés aux unités de mesure.