Skip to content

Instantly share code, notes, and snippets.

@euskadi31
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save euskadi31/679a4af169333262d14c to your computer and use it in GitHub Desktop.
Save euskadi31/679a4af169333262d14c to your computer and use it in GitHub Desktop.
PHP UUID v4 class
<?php
/**
* @see http://stackoverflow.com/a/15875555
*/
class UUID
{
public static function random()
{
if (function_exists('uuid_create')) {
return uuid_create();
} else if (function_exists('openssl_random_pseudo_bytes')) {
$data = openssl_random_pseudo_bytes(16);
} else if (function_exists('random_bytes')) {
$data = random_bytes(16);
}
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
}
var_dump(UUID::random());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment