Start · Sprachen · PHP · Referenz · variant_imp

variant_imp

Funktion

Führt eine bitweise Implikation (<code>IMP</code>) zweier Variant-Werte durch und gibt das Ergebnis als Variant zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_imp(mixed $left, mixed $right): mixed

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

Typ
mixed
Beschreibung
Gibt das Ergebnis der bitweisen Implikation als 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
bool(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
-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.