Start · Sprachen · PHP · Referenz · com_create_guid

com_create_guid

Funktion

Erzeugt eine global eindeutige ID (GUID) im Format <code>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}</code> (Windows/COM-Extension).

seit PHP 5.0.0 Kategorie: misc

Signatur

com_create_guid(): string|false

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

Typ
string|false
Beschreibung
Gibt bei Erfolg einen GUID-String im Format {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?).';
}
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

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.';
}
3f2504e0-4f89-11d3-9a0c-0305e82c3301

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();
3f2504e0-4f89-11d3-9a0c-0305e82c3301

// 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.