Signatur
Beschreibung
com_create_guid() generiert eine Globally Unique Identifier (GUID) gemäß dem UUID-Standard Version 4. Das Ergebnis ist ein String im kanonischen Windows-COM-Format, eingeschlossen in geschweifte Klammern: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}, wobei alle Zeichen in Großbuchstaben ausgegeben werden.
Die Funktion steht ausschließlich unter Windows zur Verfügung, da sie die COM-Extension (php_com_dotnet.dll) voraussetzt. Auf Linux- oder macOS-Systemen ist sie nicht verfügbar. Für plattformübergreifende UUID-Erzeugung empfiehlt sich stattdessen Ramsey\Uuid (Composer-Paket) oder eine eigene Implementierung mit random_bytes().
Typische Einsatzgebiete sind die Integration mit Windows-COM-Komponenten, die Erzeugung eindeutiger Schlüssel für Datensätze sowie die Kommunikation mit Diensten, die GUIDs im Microsoft-Format erwarten.
Rückgabewert
{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} zurück. Im Fehlerfall (z. B. COM-Extension nicht geladen) wird false zurückgegeben.Beispiele
Einfache GUID erzeugen
<?php
// Erzeugt eine neue GUID (nur unter Windows mit COM-Extension)
$guid = com_create_guid();
if ($guid !== false) {
echo $guid;
} else {
echo 'GUID konnte nicht erzeugt werden (COM-Extension fehlt?).';
}
GUID ohne geschweifte Klammern und in Kleinbuchstaben (UUID-Format)
<?php
// Viele APIs erwarten UUIDs ohne Klammern und in Kleinbuchstaben
function guid_to_uuid(string $guid): string {
return strtolower(trim($guid, '{}'));
}
$guid = com_create_guid();
if ($guid !== false) {
$uuid = guid_to_uuid($guid);
echo $uuid; // z. B. 3f2504e0-4f89-11d3-9a0c-0305e82c3301
} else {
echo 'Nicht verfügbar.';
}
Plattformübergreifende Fallback-Implementierung
<?php
/**
* Erzeugt eine UUID v4, funktioniert auf Windows und Unix.
*/
function create_uuid(): string {
if (function_exists('com_create_guid')) {
return strtolower(trim(com_create_guid(), '{}'));
}
// Fallback mit random_bytes() (PHP >= 7.0)
$data = random_bytes(16);
$data[6] = chr((ord($data[6]) & 0x0f) | 0x40); // Version 4
$data[8] = chr((ord($data[8]) & 0x3f) | 0x80); // Variante RFC 4122
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
echo create_uuid();
// Wichtig · Fallstricke
Plattformabhängigkeit: com_create_guid() ist ausschließlich unter Windows verfügbar und erfordert die aktivierte PHP-COM/DOTNET-Extension (extension=php_com_dotnet.dll in der php.ini). Auf anderen Betriebssystemen existiert die Funktion nicht und führt zu einem fatalen Fehler, sofern nicht geprüft wird (function_exists('com_create_guid')).
Eindeutigkeit: Obwohl GUIDs statistisch als eindeutig gelten, sollten sie bei extrem hohen Volumen oder sicherheitskritischen Anwendungen nicht als kryptografisch sichere Token verwendet werden. Für sicherheitsrelevante Zufallswerte ist random_bytes() in Kombination mit einer UUID-Bibliothek vorzuziehen.