| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?php
- /**
- * This file is part of the ramsey/uuid library
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
- * @license http://opensource.org/licenses/MIT MIT
- * phpcs:disable Squiz.Functions.GlobalFunction
- */
- declare(strict_types=1);
- namespace Ramsey\Uuid;
- use DateTimeInterface;
- use Ramsey\Uuid\Type\Hexadecimal;
- use Ramsey\Uuid\Type\Integer as IntegerObject;
- /**
- * Returns a version 1 (Gregorian time) UUID from a host ID, sequence number,
- * and the current time
- *
- * @param Hexadecimal|int|string|null $node A 48-bit number representing the
- * hardware address; this number may be represented as an integer or a
- * hexadecimal string
- * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that
- * could arise when the clock is set backwards in time or if the node ID
- * changes
- *
- * @return non-empty-string Version 1 UUID as a string
- */
- function v1($node = null, ?int $clockSeq = null): string
- {
- return Uuid::uuid1($node, $clockSeq)->toString();
- }
- /**
- * Returns a version 2 (DCE Security) UUID from a local domain, local
- * identifier, host ID, clock sequence, and the current time
- *
- * @param int $localDomain The local domain to use when generating bytes,
- * according to DCE Security
- * @param IntegerObject|null $localIdentifier The local identifier for the
- * given domain; this may be a UID or GID on POSIX systems, if the local
- * domain is person or group, or it may be a site-defined identifier
- * if the local domain is org
- * @param Hexadecimal|null $node A 48-bit number representing the hardware
- * address
- * @param int|null $clockSeq A 14-bit number used to help avoid duplicates
- * that could arise when the clock is set backwards in time or if the
- * node ID changes
- *
- * @return non-empty-string Version 2 UUID as a string
- */
- function v2(
- int $localDomain,
- ?IntegerObject $localIdentifier = null,
- ?Hexadecimal $node = null,
- ?int $clockSeq = null
- ): string {
- return Uuid::uuid2($localDomain, $localIdentifier, $node, $clockSeq)->toString();
- }
- /**
- * Returns a version 3 (name-based) UUID based on the MD5 hash of a
- * namespace ID and a name
- *
- * @param string|UuidInterface $ns The namespace (must be a valid UUID)
- *
- * @return non-empty-string Version 3 UUID as a string
- *
- * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants,
- * but under constant factory setups, this method operates in functionally pure manners
- */
- function v3($ns, string $name): string
- {
- return Uuid::uuid3($ns, $name)->toString();
- }
- /**
- * Returns a version 4 (random) UUID
- *
- * @return non-empty-string Version 4 UUID as a string
- */
- function v4(): string
- {
- return Uuid::uuid4()->toString();
- }
- /**
- * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a
- * namespace ID and a name
- *
- * @param string|UuidInterface $ns The namespace (must be a valid UUID)
- *
- * @return non-empty-string Version 5 UUID as a string
- *
- * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants,
- * but under constant factory setups, this method operates in functionally pure manners
- */
- function v5($ns, string $name): string
- {
- return Uuid::uuid5($ns, $name)->toString();
- }
- /**
- * Returns a version 6 (reordered time) UUID from a host ID, sequence number,
- * and the current time
- *
- * @param Hexadecimal|null $node A 48-bit number representing the hardware
- * address
- * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that
- * could arise when the clock is set backwards in time or if the node ID
- * changes
- *
- * @return non-empty-string Version 6 UUID as a string
- */
- function v6(?Hexadecimal $node = null, ?int $clockSeq = null): string
- {
- return Uuid::uuid6($node, $clockSeq)->toString();
- }
- /**
- * Returns a version 7 (Unix Epoch time) UUID
- *
- * @param DateTimeInterface|null $dateTime An optional date/time from which
- * to create the version 7 UUID. If not provided, the UUID is generated
- * using the current date/time.
- *
- * @return non-empty-string Version 7 UUID as a string
- */
- function v7(?DateTimeInterface $dateTime = null): string
- {
- return Uuid::uuid7($dateTime)->toString();
- }
- /**
- * Returns a version 8 (custom) UUID
- *
- * The bytes provided may contain any value according to your application's
- * needs. Be aware, however, that other applications may not understand the
- * semantics of the value.
- *
- * @param string $bytes A 16-byte octet string. This is an open blob
- * of data that you may fill with 128 bits of information. Be aware,
- * however, bits 48 through 51 will be replaced with the UUID version
- * field, and bits 64 and 65 will be replaced with the UUID variant. You
- * MUST NOT rely on these bits for your application needs.
- *
- * @return non-empty-string Version 8 UUID as a string
- */
- function v8(string $bytes): string
- {
- return Uuid::uuid8($bytes)->toString();
- }
|