(PHP 4 >= 4.1.0, PHP 5, PHP 7)
Die VARIANTe ist COMs Pendant des PHP zvals; es ist eine Struktur, die einen Wert einer Reihe unterschiedlicher möglicher Typen enthalten kann. Die VARIANT-Klasse, die durch die COM Extension zur Verfügung gestellt wird, erlaubt es, mehr Kontrolle über die Art, wie PHP Werte an COM übergibt und von diesem empfängt, zu haben.
$vVar = new VARIANT($var)
VARIANT Klassen-Konstruktor. Parameter:
NULL
gesetzt, wird ein VT_EMPTY Objekt erzeugt.
VT_XXX
Vordefinierte Konstanten.
In PHP Versionen vor PHP 5 konnte die Übergabe eines varianten Objekts
per Reference erzwungen werden, indem VT_BYREF
mit
dem type
oder-verknüpft wurde. In PHP 5 wird dieser
Hack nicht mehr unterstützt; statt dessen kann PHP 5 Parameter, die per
Referenz übergeben wurden, automatisch erkennen; sie müssen nicht einmal
als VARIANT Objekte übergeben werden.
Die MSDN Bibliothek kann für zusätzliche Informationen
über den VARIANT Typen konsultiert werden.
PHP-Versionen vor PHP 5 definieren eine Reihe von (undokumentierten) virtuellen Eigenschaften für Exemplare der VARIANT Klasse; diese Eigenschaften wurden alle in PHP 5 zugunsten dessen natürlicheren Syntax entfernt; diese Unterschiede werden am besten durch ein Beispiel erklärt:
Beispiel #1 Variant-Beispiel, PHP 4.x Stil
<?php
$v = new VARIANT(42);
print "Der Typ ist " . $v->type . "<br/>";
print "Der Wert ist " . $v->value . "<br/>";
?>
Beispiel #2 Variant-Beispiel, PHP 5 Stil
<?php
$v = new VARIANT(42);
print "Der Typ ist " . variant_get_type($v) . "<br/>";
print "Der Wert ist " . $v . "<br/>";
?>
Der Grund für die Änderung ist, dass die COM Extension intern VARIANT, COM und DOTNET Klassen als die selbe Sache ansieht, und die Design-Philosophie für diese Klassen ist, dass alle Eigenschafts- und Memberzugriffe ohne Eingriff an COM durchgereicht werden. Die neue Syntax is natürlicher und weniger Aufwand, und die meisten der entfernten virtuellen Eigenschaften waren in einem PHP- Kontext sowieso sinnlos.
Hinweis:
PHP 5 wählt einen viel einfacheren Ansatz zur Behandlung von VARIANTs; wenn ein Wert zurückgegeben, oder eine variante Eigenschaft abgerufen wird, wird die Variante nur in einen PHP-Wert konvertiert, falls es eine direkte, verlustlose Zuordnung zwischen den Typen gibt. In allen anderen Fällen wird das Ergebnis als Exemplar der VARIANT-Klasse zurückgegeben. Es ist möglich PHP zu zwingen, die Variante in einen nativen Typ zu konvertieren, entweder durch explizite Verwendung eines Typumwandlungs-Operators, oder durch das printen implizit in einen String zu wandeln. Die umfangreichen Variant-Funktionen können verwendet werden, um arithmetische Operationen auf Varianten durchzuführen, ohne eine Konvertierung zu erzwingen, oder Datenverlust zu riskieren.
Siehe auch variant_get_type().