Start · Sprachen · PHP · Referenz · variant_get_type

variant_get_type

Funktion

Gibt den Typcode eines <code>variant</code>-Objekts als Integer zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_get_type(variant $variant): int

Beschreibung

variant_get_type() liefert den numerischen Typcode, der den internen Datentyp eines COM-variant-Objekts beschreibt. Variant-Typen sind ein Konzept aus der Windows-COM-Welt und werden in PHP durch die Klasse variant repräsentiert.

Der zurückgegebene Integer entspricht einer der vordefinierten VT_*-Konstanten (z. B. VT_I4, VT_BSTR, VT_BOOL, VT_NULL usw.), die in der PHP-COM-Erweiterung definiert sind. Damit lässt sich zur Laufzeit prüfen, welchen Datentyp ein Variant tatsächlich enthält, bevor Operationen darauf ausgeführt werden.

Die Funktion ist ausschließlich unter Windows verfügbar und setzt die com_dotnet-Erweiterung voraus. Sie wird typischerweise eingesetzt, wenn PHP mit COM-Automatisierungsschnittstellen (z. B. Microsoft Office, ActiveX-Objekte) kommuniziert und der genaue Typ eines zurückgegebenen Wertes bekannt sein muss.

  • VT_NULL (1) – Null-Wert
  • VT_I2 (2) – 16-Bit-Integer
  • VT_I4 (3) – 32-Bit-Integer
  • VT_BSTR (8) – String (BSTR)
  • VT_BOOL (11) – Boolean
  • VT_VARIANT (12) – verschachteltes Variant
  • VT_ARRAY (8192) – Array-Flag (kombinierbar mit anderen VT_*-Typen)

Parameter

Name Typ Default Beschreibung
$variant Pflicht variant Ein variant-Objekt, dessen interner Typcode abgefragt werden soll.

Rückgabewert

Typ
int
Beschreibung
Gibt den numerischen Typcode des Variants zurück. Der Wert entspricht einer der VT_*-Konstanten der COM-Erweiterung.

Beispiele

Typcode eines manuell erzeugten Variants prüfen

<?php
// Einen Variant vom Typ VT_I4 (32-Bit-Integer) erzeugen
$v = new variant(42, VT_I4);

$type = variant_get_type($v);

echo "Typcode: " . $type . PHP_EOL;

if ($type === VT_I4) {
    echo "Das Variant enthält einen 32-Bit-Integer." . PHP_EOL;
}
Typcode: 3 Das Variant enthält einen 32-Bit-Integer.

Typcode eines COM-Rückgabewerts auswerten

<?php
// Excel über COM ansprechen (nur Windows)
$excel = new COM('Excel.Application');
$excel->Visible = false;

$workbooks = $excel->Workbooks;
$countVariant = new variant($workbooks->Count);

$type = variant_get_type($countVariant);

switch ($type) {
    case VT_I4:
        echo "Integer-Wert erhalten: " . (int)$countVariant . PHP_EOL;
        break;
    case VT_BSTR:
        echo "String-Wert erhalten: " . (string)$countVariant . PHP_EOL;
        break;
    default:
        echo "Unbekannter Typcode: " . $type . PHP_EOL;
}

$excel->Quit();
unset($excel);

// Wichtig · Fallstricke

Plattformabhängigkeit: variant_get_type() steht ausschließlich unter Windows zur Verfügung und erfordert die aktivierte com_dotnet-PHP-Erweiterung (extension=com_dotnet in der php.ini). Auf Linux/macOS führt ein Aufruf zu einem fatalen Fehler.

Typen können als Bitmask kombiniert sein – z. B. VT_ARRAY | VT_I4 (= 8195) für ein Array aus 32-Bit-Integern. Beim Vergleich sollte daher mit dem bitweisen UND-Operator (&) geprüft werden, ob ein bestimmtes Flag gesetzt ist.