Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
7 / 7 |
UUIDSequencer | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |
100.00% |
7 / 7 |
getNextSequence | |
100.00% |
1 / 1 |
1 | |
100.00% |
7 / 7 |
<?php | |
declare(strict_types = 1); | |
namespace Siesta\Sequencer; | |
use Siesta\Model\PHPType; | |
class UUIDSequencer implements Sequencer | |
{ | |
const NAME = "uuid"; | |
const DB_TYPE = "VARCHAR(36)"; | |
const PHP_TYPE = PHPType::STRING; | |
public function getNextSequence(string $tableName, string $connectionName = null) | |
{ | |
return sprintf('%s-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" | |
dechex(microtime(true) * 10000), | |
// 16 bits for "time_mid" | |
mt_rand(0, 0xffff), | |
mt_rand(0, 0xffff), | |
// 16 bits for "time_hi_and_version", | |
// four most significant bits holds version number 4 | |
mt_rand(0, 0x0fff) | 0x4000, | |
// 16 bits, 8 bits for "clk_seq_hi_res", | |
// 8 bits for "clk_seq_low", | |
// two most significant bits holds zero and one for variant DCE1.1 | |
mt_rand(0, 0x3fff) | 0x8000, | |
// 48 bits for "node" | |
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)); | |
} | |
} |