Thanks to visit codestin.com
Credit goes to github.com

Skip to content

tiny-blocks/ksuid

Repository files navigation

Ksuid

License

Overview

Ksuid stands for K-Sortable Unique Identifier. It's a way to generate globally unique IDs which are partially chronologically sortable.

Installation

composer require tiny-blocks/ksuid

How to use

The library exposes a concrete implementation through the Ksuid class.

Creating a Ksuid

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(); # 286353450

You can also choose from other factory models.

Ksuid::from(payload: hex2bin('9850EEEC191BF4FF26F99315CE43B0C8'), timestamp: 286235327);

Ksuid::fromPayload(value: '0o5Fs0EELR0fUjHjbCnEtdUwQe3');

Ksuid::fromTimestamp(value: 286235327);

Inspecting a Ksuid

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
                 # )

License

Math is licensed under MIT.

Contributing

Please follow the contributing guidelines to contribute to the project.