An RFC-4122 compliant Universally Unique Identifiers value object implementation
composer require castor/uuid<?php
use Castor\Uuid;
$uuid = Uuid\Version4::generate();
echo $uuid->toString(); // Prints: d2e365c8-b525-428d-979f-64b70e76a217
echo $uuid->toUrn(); // Prints: urn:uuid:d2e365c8-b525-428d-979f-64b70e76a217
echo $uuid->getBytes()->toHex(); // Prints: d2e365c8b525428d979f64b70e76a217
$parsed = Uuid\parse($uuid->toString());
echo $parsed instanceof Uuid\Version1; // Prints: false
echo $parsed instanceof Uuid\Version4; // Prints: true
echo $parsed instanceof Uuid\Version3; // Prints: false
echo $parsed instanceof Uuid\Version5; // Prints: false
echo $parsed instanceof Uuid\Version6; // Prints: false
echo $parsed->equals($uuid); // Prints: trueThe same API is available for Uuid\Version3, Uuid\Version5, Uuid\Version6 and Uuid\Version7.
Uuid\Version1, Uuid\Version6 and Uuid\Version7 implement Uuid\TimeBased which provides an extended API that can
return the time component that form it.
Uuid\Version2 will not be implemented.