Start · Sprachen · PHP · Referenz · variant_or

variant_or

Funktion

Führt eine bitweise bzw. logische ODER-Verknüpfung zweier <code>VARIANT</code>-Werte durch und gibt das Ergebnis als <code>VARIANT</code> zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_or(mixed $left, mixed $right): variant

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

Typ
variant
Beschreibung
Gibt ein 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
?>
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';
?>
true

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;
?>
7

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