Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
13 / 13 |
| Php | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |
100.00% |
13 / 13 |
| generate | |
100.00% |
1 / 1 |
1 | |
100.00% |
13 / 13 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Component\Uuid\Php. | |
| */ | |
| namespace Drupal\Component\Uuid; | |
| use Drupal\Component\Utility\Crypt; | |
| /** | |
| * Generates a UUID v4 using PHP code. | |
| * | |
| * Loosely based on Ruby's UUIDTools generate_random logic. | |
| * | |
| * @see http://uuidtools.rubyforge.org/api/classes/UUIDTools/UUID.html | |
| */ | |
| class Php implements UuidInterface { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function generate() { | |
| $hex = substr(hash('sha256', Crypt::randomBytes(16)), 0, 32); | |
| // The field names refer to RFC 4122 section 4.1.2. | |
| $time_low = substr($hex, 0, 8); | |
| $time_mid = substr($hex, 8, 4); | |
| $time_hi_and_version = base_convert(substr($hex, 12, 4), 16, 10); | |
| $time_hi_and_version &= 0x0FFF; | |
| $time_hi_and_version |= (4 << 12); | |
| $clock_seq_hi_and_reserved = base_convert(substr($hex, 16, 4), 16, 10); | |
| $clock_seq_hi_and_reserved &= 0x3F; | |
| $clock_seq_hi_and_reserved |= 0x80; | |
| $clock_seq_low = substr($hex, 20, 2); | |
| $nodes = substr($hex, 20); | |
| $uuid = sprintf('%s-%s-%04x-%02x%02x-%s', | |
| $time_low, $time_mid, | |
| $time_hi_and_version, $clock_seq_hi_and_reserved, | |
| $clock_seq_low, $nodes); | |
| return $uuid; | |
| } | |
| } |