class UUID

UUID

Implementierung des Universally_Unique_Identifier (UUID) Standards. Der Aufbei einer UUID entspricht dabei dem folgendem Schema:

UUID = time-low "-" time-mid "-" time-high-and-version "-" clock-seq-and-reserved clock-seq-low "-" node

Eine Beispiel UUID in URI-Notation sieht folgendermaßen aus urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

$uuid = Alvine\Util\UUID::generateFromName(Alvine\Util\UUID::NSDNS, 'www.example.org');
echo $uuid;  // Ausgabe ist '74738ff5-5367-5958-9aee-98fffdcd1876';

Constants

TIMEBASED

ursprüngliche, zeitstempelbasierte UUID

DCEBASED

DCE Security version (nicht implementiert)

NAMEMD5BASED

namensbasiert, MD5-gehasht

RANDOMBASED

zufällig oder pseudozufällige UUID

NAMESHA1BASED

namensbasiert, SHA1-gehasht

NSDNS

Namespace für DNS Hostname Vordefinierte Namespaces, siehe Appendix C of RFC 4122

NSURL

Namespace für eine gültige URL Vordefinierte Namespaces, siehe Appendix C of RFC 4122

NSOID

Namespace für ISO Object Identifier Vordefinierte Namespaces, siehe Appendix C of RFC 4122

NSX500

Namespace für X.500 Objekte Vordefinierte Namespaces, siehe Appendix C of RFC 4122

Methods

__construct(int $version, int $timeLow, int $timeMid, int $timeHi, int $clockSeqHi, int $clockSeqLow, string $node)

UUID erstellen

static UUID
generateFromTime(string $node = null)

Erstellt ein neues UUID Objekt nach Version 1 der Spezifikation, bestehend aus einem Zeitstempel und der Node-ID (entweder eine gültige MAC-Adresse, oder ein Zufallswert). Anhand einer solchen UUID lassen sich Rückschlüsse auf den Zeitpunkt der Erstellung und auf den Rechner ziehen.

static UUID
generateFromName(string $namespace, string $name, int $hashAlgorithm = self::NAMESHA1BASED)

Erstellt eine UUID aus einem Namespace und einen Namen. Eine über einen Namen erstellt UUID muss immer wieder zum selben Ergebnis führen. Eine UUID im Namespace A aus dem Namen B und eine UUID C im Namespace D können identisch sein.

static UUID
generateFromString(string $uuid)

Liegt die UUID im String-Format (74738ff5-5367-5958-9aee-98fffdcd1876) vor, so kann über diese Funktion ein UUID-Objekt aus dem String erstellt werden. Sollte es sich bei dem String nicht um eine gültige UUID handeln, so wird eine MalformedUUIDException geworfen.

static UUID
generateFromRandom()

Erstellt eine UUID nach Typ 4 aus zufälligen Zahlen. Obwohl die Eindeutigkeit für so generierte UUID nicht garantiert ist, ist die Gesamtzahl der eindeutigen Schlüssel mit 3,4028*1038 so groß, dass die Wahrscheinlichkeit der Erzeugung zwei gleicher UUIDs gegen null geht.

static boolean
isValid(string $uuid)

Funktion, die das Format eines Strings überprüft und bei einem gültigen UUID-String (z.B. 74738ff5-5367-5958-9aee-98fffdcd1876) true, ansonsten falls zurückgibt.

string
__toString()

Diese Funktion wird beim Cast eines UUID-Objekts in einen String aufgerufen.

Details

at line 164
protected __construct(int $version, int $timeLow, int $timeMid, int $timeHi, int $clockSeqHi, int $clockSeqLow, string $node)

UUID erstellen

Der Konstruktor erstellt ein neues UUID Objekt. Er kann allerdings nicht selber, sondern nur von einer Factory-Methode aufgerufen werden. Die interne Struktur ist wie inder Spezifikation definiert durch die Version 1 vorgegeben. Die anderen Versionen verwenden ebenfalls diese Struktur, jedoch ohne Wert auf den Namen zu legen.

Parameters

int $version Version der UUID (1-5, 2 ist nicht implementiert)
int $timeLow 32-bit der UUID
int $timeMid 16-bit der UUID
int $timeHi 16-bit der UUID
int $clockSeqHi 8-bit der UUID
int $clockSeqLow 8-bit der UUID
string $node Hex-Wert der Node

at line 214
static UUID generateFromTime(string $node = null)

Erstellt ein neues UUID Objekt nach Version 1 der Spezifikation, bestehend aus einem Zeitstempel und der Node-ID (entweder eine gültige MAC-Adresse, oder ein Zufallswert). Anhand einer solchen UUID lassen sich Rückschlüsse auf den Zeitpunkt der Erstellung und auf den Rechner ziehen.

Parameters

string $node MAC-Adresse oder Zufallswert in HEX-Darstellung ohne Sonderzeichen

Return Value

UUID Neues Objekt

at line 248
static UUID generateFromName(string $namespace, string $name, int $hashAlgorithm = self::NAMESHA1BASED)

Erstellt eine UUID aus einem Namespace und einen Namen. Eine über einen Namen erstellt UUID muss immer wieder zum selben Ergebnis führen. Eine UUID im Namespace A aus dem Namen B und eine UUID C im Namespace D können identisch sein.

Daher kann man von einer UUID nicht auf den Namen und den Namespace schliessen.

Parameters

string $namespace String-UUID des Namespaces
string $name Name der UUID (z.B. ein Domainname)
int $hashAlgorithm Version des Hash (SHA-1 oder MD5)

Return Value

UUID Neues Objekt

at line 294
static UUID generateFromString(string $uuid)

Liegt die UUID im String-Format (74738ff5-5367-5958-9aee-98fffdcd1876) vor, so kann über diese Funktion ein UUID-Objekt aus dem String erstellt werden. Sollte es sich bei dem String nicht um eine gültige UUID handeln, so wird eine MalformedUUIDException geworfen.

Parameters

string $uuid UUID im Stringformat 74738ff5-5367-5958-9aee-98fffdcd1876

Return Value

UUID Neues Objekt

See also

MalformedUUIDException

at line 324
static UUID generateFromRandom()

Erstellt eine UUID nach Typ 4 aus zufälligen Zahlen. Obwohl die Eindeutigkeit für so generierte UUID nicht garantiert ist, ist die Gesamtzahl der eindeutigen Schlüssel mit 3,4028*1038 so groß, dass die Wahrscheinlichkeit der Erzeugung zwei gleicher UUIDs gegen null geht.

Aus diesme Grund können UUID zur Kennzeichnung ohne zentrale Kontrollinstanz erstellt und verwendet werden.

Return Value

UUID Neues Objekt

at line 345
static boolean isValid(string $uuid)

Funktion, die das Format eines Strings überprüft und bei einem gültigen UUID-String (z.B. 74738ff5-5367-5958-9aee-98fffdcd1876) true, ansonsten falls zurückgibt.

Parameters

string $uuid Zu prüfender String

Return Value

boolean true im Falle eines gültigen Strings

at line 358
string __toString()

Diese Funktion wird beim Cast eines UUID-Objekts in einen String aufgerufen.

$uuid = UUID::::generateFromRandom();
$string = (string)$uuid; // $string ist nun eine Zeichenkette wie 74738ff5-5367-5958-9aee-98fffdcd1876

Return Value

string UUID als String