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/ksuidThe 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();
echo $ksuid->getValue(); # 2QzPUGEaAKHhVcQYrqQodbiZat1
echo $ksuid->getPayload(); # 464932c1194da98e752145d72b8f0aab
echo $ksuid->getUnixTime(); # 1686353450
echo $ksuid->getTimestamp(); # 286353450You 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');
print_r($ksuid); # Array
# (
# [time] => 2023-06-09 23:30:50 +0000 GMT+0000
# [payload] => 464932c1194da98e752145d72b8f0aab
# [timestamp] => 286353450
# )Math is licensed under MIT.
Please follow the contributing guidelines to contribute to the project.