Aller au contenu

Identifiant daté

phil/doctrine-behaviours
TypeGenreRôle
Contract\DatedIdentifiableinterfacedatedId(), assignDatedId(), datedIdTime()
DatedIdentifierEntitytraitLa clé primaire id, une colonne guid
DatedIdentifierListenerécouteur : prePersistDonne à un nouvel enregistrement un UUID v7 de l'heure de l'horloge

L'identifiant est un UUID v7 de symfony/uid : 48 bits de millisecondes suivis de bits aléatoires. Les identifiants se trient dans l'ordre de leur création, une clé primaire sur eux reste compacte, et tout outil qui lit un UUID lit celui-ci, sans format maison à documenter ni à analyser.

$ticket->datedId();                                // '019a4f2e-…', known once persisted
$ticket->datedIdTime();                            // the moment it holds

Un identifiant donné à l'avance est gardé, et doit être un UUID v7 : assignDatedId() refuse tout le reste.

L'heure de création se lit dans l'identifiant : là où cette heure est elle-même sensible, utilisez un identifiant aléatoire. L'écouteur doit être enregistré, puisque rien d'autre ne donne sa clé à l'entité.