class Php in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Component/Uuid/Php.php \Drupal\Component\Uuid\Php
Generates a UUID v4 using PHP code.
Loosely based on Ruby's UUIDTools generate_random logic.
Hierarchy
- class \Drupal\Component\Uuid\Php implements UuidInterface
Expanded class hierarchy of Php
See also
http://uuidtools.rubyforge.org/api/classes/UUIDTools/UUID.html
3 files declare their use of Php
- ConfigImportRenameValidationTest.php in core/
modules/ config/ src/ Tests/ ConfigImportRenameValidationTest.php - Contains \Drupal\config\Tests\ConfigImportRenameValidationTest.
- StorageComparerTest.php in core/
tests/ Drupal/ Tests/ Core/ Config/ StorageComparerTest.php - Contains \Drupal\Tests\Core\Config\StorageComparerTest.
- UuidTest.php in core/
tests/ Drupal/ Tests/ Component/ Uuid/ UuidTest.php - Contains \Drupal\Tests\Component\Uuid\UuidTest.
File
- core/
lib/ Drupal/ Component/ Uuid/ Php.php, line 19 - Contains \Drupal\Component\Uuid\Php.
Namespace
Drupal\Component\UuidView source
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 &= 0xfff;
$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;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Php:: |
public | function |
Generates a Universally Unique IDentifier (UUID). Overrides UuidInterface:: |