You are here

class Php in Zircon Profile 8

Same name and namespace in other branches
  1. 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

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\Uuid
View 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

Namesort descending Modifiers Type Description Overrides
Php::generate public function Generates a Universally Unique IDentifier (UUID). Overrides UuidInterface::generate