class RandomNodeProvider
RandomNodeProvider generates a random node ID
@link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, ยง 4.5: Node IDs that Do Not Identify the Host
Hierarchy
- class \Ramsey\Uuid\Provider\Node\RandomNodeProvider implements \Ramsey\Uuid\Provider\NodeProviderInterface
Expanded class hierarchy of RandomNodeProvider
1 file declares its use of RandomNodeProvider
- FeatureSet.php in vendor/
ramsey/ uuid/ src/ FeatureSet.php
File
-
vendor/
ramsey/ uuid/ src/ Provider/ Node/ RandomNodeProvider.php, line 36
Namespace
Ramsey\Uuid\Provider\NodeView source
class RandomNodeProvider implements NodeProviderInterface {
public function getNode() : Hexadecimal {
try {
$nodeBytes = random_bytes(6);
} catch (Throwable $exception) {
throw new RandomSourceException($exception->getMessage(), (int) $exception->getCode(), $exception);
}
// Split the node bytes for math on 32-bit systems.
$nodeMsb = substr($nodeBytes, 0, 3);
$nodeLsb = substr($nodeBytes, 3);
// Set the multicast bit; see RFC 4122, section 4.5.
$nodeMsb = hex2bin(str_pad(dechex(hexdec(bin2hex($nodeMsb)) | 0x10000), 6, '0', STR_PAD_LEFT));
// Recombine the node bytes.
$node = $nodeMsb . $nodeLsb;
return new Hexadecimal(str_pad(bin2hex($node), 12, '0', STR_PAD_LEFT));
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
RandomNodeProvider::getNode | public | function | Returns a node ID | Overrides NodeProviderInterface::getNode |