Signatur
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-WertVT_I2(2) – 16-Bit-IntegerVT_I4(3) – 32-Bit-IntegerVT_BSTR(8) – String (BSTR)VT_BOOL(11) – BooleanVT_VARIANT(12) – verschachteltes VariantVT_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
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 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.