Signatur
Beschreibung
variant_or() verknüpft zwei VARIANT-Werte mit einem logischen bzw. bitweisen OR-Operator. Diese Funktion ist Teil der COM/VARIANT-Erweiterung von PHP, die ausschließlich unter Windows verfügbar ist und die Interoperabilität mit COM-Objekten (Component Object Model) ermöglicht.
Im Gegensatz zum einfachen PHP-Operator | berücksichtigt variant_or() die internen Typregeln von VARIANT-Werten und stellt sicher, dass die Typumwandlung gemäß den COM-Spezifikationen erfolgt. Beide Operanden können entweder native PHP-Skalare oder VARIANT-Objekte sein – PHP konvertiert einfache Typen automatisch in kompatible VARIANT-Typen.
Die Funktion ist dann sinnvoll, wenn Werte aus COM-Objekten direkt verknüpft werden sollen, ohne sie vorher explizit in PHP-native Typen umzuwandeln, was zu Präzisionsverlusten oder Typinkompatibilitäten führen könnte. Sie wird hauptsächlich in Windows-spezifischen Automatisierungsszenarien (z. B. Office-Automatisierung über COM) eingesetzt.
Hinweis: Diese Funktion steht nur auf Windows-Systemen mit aktivierter COM-Erweiterung zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $left Pflicht | mixed | Der linke Operand der ODER-Verknüpfung. Kann ein VARIANT-Objekt oder ein kompatibler PHP-Skalarwert (z. B. int, bool) sein. |
|
| $right Pflicht | mixed | Der rechte Operand der ODER-Verknüpfung. Kann ein VARIANT-Objekt oder ein kompatibler PHP-Skalarwert (z. B. int, bool) sein. |
Rückgabewert
VARIANT-Objekt zurück, das das Ergebnis der logischen bzw. bitweisen ODER-Verknüpfung der beiden Operanden enthält. Der genaue Rückgabetyp des VARIANT-Werts hängt von den Typen der Eingabeoperanden ab.Beispiele
Bitweise ODER-Verknüpfung zweier Integer-VARIANT-Werte
<?php
// Nur unter Windows mit COM-Erweiterung verfügbar
$a = new VARIANT(0b1010, VT_I4); // 10 dezimal
$b = new VARIANT(0b0110, VT_I4); // 6 dezimal
$result = variant_or($a, $b);
echo (int) $result; // 0b1110 = 14
?>
Logische ODER-Verknüpfung zweier boolescher VARIANT-Werte
<?php
// Nur unter Windows mit COM-Erweiterung verfügbar
$a = new VARIANT(false, VT_BOOL);
$b = new VARIANT(true, VT_BOOL);
$result = variant_or($a, $b);
echo (bool) $result ? 'true' : 'false';
?>
ODER-Verknüpfung mit PHP-Skalaren (automatische Konvertierung)
<?php
// Nur unter Windows mit COM-Erweiterung verfügbar
// PHP-Skalare werden automatisch in VARIANT umgewandelt
$result = variant_or(5, 3); // 0b0101 | 0b0011 = 0b0111 = 7
echo (int) $result;
?>
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_or() ist ausschließlich unter Windows verfügbar und setzt die aktivierte com_dotnet-Erweiterung in der php.ini voraus (extension=com_dotnet). Der Aufruf auf anderen Betriebssystemen führt zu einem fatalen Fehler.
Typverhalten: Das Ergebnis des OR-Operators hängt stark von den VARIANT-Typen der Operanden ab. Bei booleschen Werten verhält sich die Funktion wie ein logisches OR, bei ganzzahligen Typen wie ein bitweises OR. Mischtypen können zu unerwarteten Konvertierungen führen – daher empfiehlt es sich, beide Operanden auf denselben VARIANT-Typ zu setzen.
Fehlerbehandlung: Bei inkompatiblen VARIANT-Typen kann die Funktion eine COM-Exception auslösen. Es empfiehlt sich daher, den Aufruf in einem try/catch-Block zu kapseln.