Ksuid stands for K-Sortable Unique Identifier. It's a way to generate globally unique IDs which are partially chronologically sortable.
composer require tiny-blocks/ksuid
The library exposes a concrete implementation through the Ksuid
class.
With the random
method, a new instance of type Ksuid
is created from a timestamp (current unix timestamp - EPOCH)
and a payload (cryptographically secure pseudo-random bytes).
$ksuid = Ksuid::random();
$ksuid->getValue(); # 2QzPUGEaAKHhVcQYrqQodbiZat1
$ksuid->getPayload(); # 464932c1194da98e752145d72b8f0aab
$ksuid->getUnixTime(); # 1686353450
$ksuid->getTimestamp(); # 286353450
You can also choose from other factory models.
Ksuid::from(payload: hex2bin('9850EEEC191BF4FF26F99315CE43B0C8'), timestamp: 286235327);
Ksuid::fromPayload(value: '0o5Fs0EELR0fUjHjbCnEtdUwQe3');
Ksuid::fromTimestamp(value: 286235327);
You can inspect the components used to create a Ksuid
, using the inspectFrom
method.
$ksuid = Ksuid::inspectFrom(ksuid: '2QzPUGEaAKHhVcQYrqQodbiZat1');
This will output the following array:
[
'time' => '2023-06-09 20:30:50 -0300 -03',
'payload' => '464932c1194da98e752145d72b8f0aab',
'timestamp' => 286353450
]
Ksuid is licensed under MIT.
Please follow the contributing guidelines to contribute to the project.