Quickstart#

Using the Id Facade#

<?php

use Infocyph\UID\Id;

$uuid = Id::uuid();          // default UUID strategy (v7)
$ulid = Id::ulid();
$snowflake = Id::snowflake();
$sonyflake = Id::sonyflake();
$tbsl = Id::tbsl();
$randflake = \Infocyph\UID\Randflake::generate(42, time() - 5, time() + 300, 'super-secret-key');
$nano = Id::nanoId(21);
$cuid2 = Id::cuid2(24);

Using Algorithm Classes#

<?php

use Infocyph\UID\CUID2;
use Infocyph\UID\NanoID;

$nano = NanoID::generate(21);
$cuid2 = CUID2::generate(24);

NanoID::isValid($nano, 21);      // bool
CUID2::isValid($cuid2);          // bool

Validation and Parsing#

<?php

use Infocyph\UID\Id;

Id::uuidIsValid($uuid);          // bool
Id::uuidParse($uuid);            // ['isValid', 'version', 'variant', 'time', 'node', 'tail']

Id::nanoIdIsValid($nano, 21);    // bool
Id::nanoIdParse($nano, 21);      // ['isValid', 'length', 'alphabet']

Id::cuid2IsValid($cuid2);        // bool
Id::cuid2Parse($cuid2);          // ['isValid', 'length']

Binary and Base Conversion#

<?php

use Infocyph\UID\Id;

$bytes = Id::uuidToBytes($uuid);       // 16 bytes
$roundTrip = Id::uuidFromBytes($bytes);

$base58 = Id::uuidToBase($uuid, 58);
$uuidAgain = Id::uuidFromBase($base58, 58);

$tbslBase62 = tbsl_to_base(Id::tbsl(), 62);

Configuration-Based Generators#

<?php

use Infocyph\UID\Configuration\SnowflakeConfig;
use Infocyph\UID\Enums\ClockBackwardPolicy;
use Infocyph\UID\Enums\IdOutputType;
use Infocyph\UID\Id;

$config = new SnowflakeConfig(
    datacenterId: 1,
    workerId: 7,
    clockBackwardPolicy: ClockBackwardPolicy::WAIT,
    outputType: IdOutputType::STRING,
);

$id = Id::snowflake($config);