Start · Sprachen · PHP · Referenz · variant_not

variant_not

Funktion

Führt eine bitweise NOT-Operation (Negation) auf einem <code>Variant</code>-Wert durch und gibt das Ergebnis als neuen <code>Variant</code> zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_not(mixed $value): mixed

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

Typ
mixed
Beschreibung
Gibt einen neuen 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)
?>
-16

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)
?>
bool(false) 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.