CONST ENCODE_BASE_64 = 1;
CONST UUID_CLEAR_VER = 15;
CONST UUID_VERSION_4 = 64;
CONST UUID_CLEAR_VAR = 63;
CONST UUID_VAR_RFC = 128;
static function uuid(array $__options = [])
{
$__options +=
[
'delimiter' => self::MINUS,
'before' => self::DEVOID,
'after' => self::DEVOID
];
$uuid = static::random(0x10);
$uuid[0x06] = chr(ord($uuid[0x06]) & static::UUID_CLEAR_VER | static::UUID_VERSION_4);
$uuid[0x08] = chr(ord($uuid[0x08]) & static::UUID_CLEAR_VAR | static::UUID_VAR_RFC);
return static::insert('{:before}{:value}{:after}', ['value' => static::join([
bin2hex(static::sub($uuid, 0x00, 0x04)),
bin2hex(static::sub($uuid, 0x04, 0x02)),
bin2hex(static::sub($uuid, 0x06, 0x02)),
bin2hex(static::sub($uuid, 0x08, 0x02)),
bin2hex(static::sub($uuid, 0x0A, 0x06))], $__options['delimiter'])] + $__options);
}
Comments