PHP Classes

File: README.md

Recommend this page to a friend!
  Packages of A. B. M. Mahmudul Hasan   UID (UUID, ULID, Snowflake, Sonyflake, Nano, CUID, KSUID, XID, TBSL)   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: UID (UUID, ULID, Snowflake, Sonyflake, Nano, CUID, KSUID, XID, TBSL)
Generate, parse, validate unique identifiers
Author: By
Last change:
Date: 6 days ago
Size: 2,516 bytes
 

Contents

Class file image Download

UID

Security & Standards Documentation Packagist Downloads License: MIT Packagist Version Packagist PHP Version GitHub Code Size

All-in-one unique ID toolkit for PHP.

Features

  • UUID (`v1`, `v3`, `v4`, `v5`, `v6`, `v7`, `v8`)
  • ULID (monotonic and random modes)
  • Snowflake, Sonyflake, TBSL
  • NanoID, CUID2, KSUID, XID
  • Opaque and deterministic IDs
  • Value objects and comparator utilities
  • Binary conversion and base encoders (`16`, `32`, `36`, `58`, `62`)
  • Pluggable sequence providers (filesystem, memory, PSR-16 cache, callback)

Requirements

  • PHP `>=8.2`
  • `ext-bcmath`

Installation

composer require infocyph/uid

Global helper functions are autoloaded via src/functions.php.

Quick Usage

<?php

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

$uuid = Id::uuid();      // default UUID strategy (v7)
$ulid = Id::ulid();
$snowflake = Id::snowflake();
$sonyflake = Id::sonyflake();
$tbsl = Id::tbsl();
$nanoid = NanoID::generate(21);
$cuid2 = CUID2::generate(24);

<?php

use Infocyph\UID\UUID;

$uuid = UUID::v7();
$ok = UUID::isValid($uuid);
$parsed = UUID::parse($uuid);

$bytes = UUID::toBytes($uuid);
$roundTrip = UUID::fromBytes($bytes);

$base58 = UUID::toBase($uuid, 58);
$decoded = UUID::fromBase($base58, 58);

The shared byte-level encoder is available as Infocyph\UID\Support\BaseEncoder for bases 16, 32, 36, 58, and 62.

References

  • UUID: https://datatracker.ietf.org/doc/html/rfc9562
  • ULID: https://github.com/ulid/spec
  • Snowflake: https://github.com/twitter-archive/snowflake/tree/snowflake-2010
  • Sonyflake: https://github.com/sony/sonyflake
  • NanoID: https://github.com/ai/nanoid
  • CUID2: https://github.com/paralleldrive/cuid2
  • TBSL note: https://github.com/infocyph/UID/blob/main/TBSL.md