Signatur
Beschreibung
variant_imp() berechnet die logische bzw. bitweise Implikation zweier COM-Variant-Werte. Die Implikation ist eine boolesche Operation, die für zwei Operanden A und B den Ausdruck NOT A OR B berechnet — sie liefert also nur dann false (bzw. 0), wenn A wahr (bzw. gesetzt) und B falsch (bzw. nicht gesetzt) ist.
Diese Funktion ist speziell für die Arbeit mit COM- und VARIANT-Objekten unter Windows gedacht und steht nur zur Verfügung, wenn PHP mit COM-Unterstützung kompiliert wurde (php_com_dotnet.dll). Sie ist Teil der Familie der bitweisen Variant-Hilfsfunktionen wie variant_and(), variant_or() und variant_xor().
Werden primitive PHP-Werte übergeben, konvertiert PHP diese intern automatisch in Variant-Objekte. Das Ergebnis der Operation wird ebenfalls als Variant zurückgegeben. Bei inkompatiblen Typen oder ungültigen Operanden kann eine com_exception ausgelöst werden.
In der Praxis wird variant_imp() typischerweise bei der Automatisierung von Windows-Anwendungen über COM-Schnittstellen benötigt, etwa bei der Interaktion mit Microsoft Office-Komponenten oder anderen COM-Servern, die VARIANT-Typen verwenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $left Pflicht | mixed | Der linke Operand der Implikation. Kann ein VARIANT-Objekt oder ein primitiver PHP-Wert sein, der automatisch konvertiert wird. |
|
| $right Pflicht | mixed | Der rechte Operand der Implikation. Kann ein VARIANT-Objekt oder ein primitiver PHP-Wert sein, der automatisch konvertiert wird. |
Rückgabewert
VARIANT-Objekt zurück. Bei einem Fehler (z. B. inkompatible Typen) wird eine com_exception ausgelöst.Beispiele
Bitweise Implikation zweier boolescher Werte
<?php
// variant_imp entspricht: NOT left OR right
// Wahrheitstabelle:
// 0 IMP 0 = -1 (true)
// 0 IMP 1 = -1 (true)
// 1 IMP 0 = 0 (false)
// 1 IMP 1 = -1 (true)
$a = new VARIANT(true, VT_BOOL);
$b = new VARIANT(false, VT_BOOL);
$result = variant_imp($a, $b);
var_dump((bool)$result); // false, weil true IMP false = false
Bitweise Implikation zweier Ganzzahlen
<?php
// Bitweise Implikation: NOT left OR right
// Beispiel: 6 (0110) IMP 3 (0011)
// NOT 6 = ...11111001, OR 3 = ...11111011 = -5
$left = new VARIANT(6, VT_I4);
$right = new VARIANT(3, VT_I4);
$result = variant_imp($left, $right);
echo (int)$result; // -5
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_imp() ist ausschließlich unter Windows verfügbar und setzt voraus, dass PHP mit der COM-Erweiterung (php_com_dotnet.dll) kompiliert wurde. Auf anderen Betriebssystemen ist die Funktion nicht vorhanden.
Fehlerbehandlung: Bei inkompatiblen Variant-Typen oder ungültigen Operanden wird eine com_exception ausgelöst, die mit einem try/catch-Block abgefangen werden sollte.
Seltenheit: Diese Funktion wird im Alltag kaum benötigt; sie ist vor allem relevant, wenn bestehende COM-Automatisierungscode-Logik in PHP abgebildet werden muss, die explizit die IMP-Operation verwendet.