Signatur
Beschreibung
variant_not() ist Teil der COM/Variant-Erweiterung von PHP und führt eine bitweise Negation (NOT) auf einem übergebenen Variant-Wert durch. Die Funktion entspricht dem VBA-Operator Not und wird primär in Verbindung mit COM-Objekten auf Windows-Systemen eingesetzt.
Die bitweise Negation kehrt jeden Bit des Integer-Wertes um. Bei einem 8-Bit-Wert 0b00001111 (15) ergibt NOT beispielsweise 0b11110000 (-16 in Zweierkomplement-Darstellung). Die genaue Breite hängt vom internen Datentyp des Variant-Objekts ab.
Diese Funktion ist vor allem dann nützlich, wenn PHP-Code mit Windows-COM-Automatisierungsschnittstellen kommuniziert, bei denen Variant-Typen explizit für bitweise logische Operationen verwendet werden müssen – etwa bei der Steuerung von Office-Anwendungen oder anderen COM-Komponenten über PHP.
Die COM-Erweiterung und damit auch variant_not() steht ausschließlich auf Windows-Plattformen zur Verfügung, auf denen PHP mit der --enable-com-dotnet-Option kompiliert wurde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value Pflicht | mixed | Ein VARIANT-Objekt oder ein Wert, der in einen Variant konvertiert werden kann (z. B. ein Integer). Der bitweise NOT-Operator wird auf diesen Wert angewendet. |
Rückgabewert
VARIANT-Wert zurück, der das Ergebnis der bitweisen NOT-Operation auf value darstellt. Bei ungültigen Eingaben oder Typkonflikten kann eine com_exception ausgelöst werden.Beispiele
Bitweise Negation eines Integer-Variant-Wertes
<?php
// Einfache bitweise NOT-Operation auf einem Integer
$value = new VARIANT(15, VT_I4);
$result = variant_not($value);
echo (int) $result; // Erwartet: -16 (bitweises NOT von 15 in 32-Bit)
?>
Bitweise Negation eines Boolean-Variant-Wertes
<?php
// Bitweises NOT auf einem booleschen Variant (VBA-ähnlich)
$trueVariant = new VARIANT(true, VT_BOOL);
$falseVariant = new VARIANT(false, VT_BOOL);
$notTrue = variant_not($trueVariant);
$notFalse = variant_not($falseVariant);
var_dump((bool) $notTrue); // bool(false)
var_dump((bool) $notFalse); // bool(true)
?>
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_not() ist ausschließlich unter Windows verfügbar und erfordert die PHP COM-Erweiterung. Auf Linux/macOS führt der Aufruf zu einem fatalen Fehler (Call to undefined function).
Typverhalten: Das Ergebnis der Operation hängt stark vom internen Variant-Typ (VT_I2, VT_I4, VT_BOOL usw.) ab. Unerwartete Typen können zu einer com_exception führen. Stelle sicher, dass du den Variant mit dem richtigen Typ (VT_I4, VT_BOOL etc.) initialisierst.
Kein PHP-nativer NOT: Für rein PHP-interne bitweise Negation auf normalen Integer-Werten sollte stattdessen der PHP-Operator ~ verwendet werden. variant_not() ist nur für explizite COM/Variant-Kontexte gedacht.