(PHP 4 >= 4.1.0, PHP 5, PHP 7)
VARIANT - это эквивалент zval для COM; это структура, которая может содержать значения различных допустимых типов. Класс VARIANT входит в расширение COM и позволяет более полно контролировать значения передаваемые от PHP к COM и обратно.
$vVar = new VARIANT($var)
Конструктор класса VARIANT. Параметры:
NULL, то будет создан
        объект VT_EMPTY.
       
      VT_XXX Предопределенные константы.
       
       
        В PHP до версии 5, было необходимо принудительно передавать объект
        по ссылке на битовое ИЛИ VT_BYREF
        с type.  В PHP 5, этот хак не поддерживается;
        PHP 5определяет значения передаваемые по ссылке автоматически;
        они даже не должны передаваться как объекты VARIANT.
       
       
        Дополнительную информацию по типам VARIANT читайте
        в библиотеке MSDN.
       
      PHP версий меньше 5 определяет некоторое количество (недокументированных) виртуальных свойств для экземпляров класса VARIANT; все эти свойства были удалены в PHP 5 в пользу более правильного синтаксиса. Эти изменения проще всего показать на примере:
Пример #1 Пример использования Variant в стиле PHP 4.x
<?php
$v = new VARIANT(42);
print "The type is " . $v->type . "<br/>";
print "The value is " . $v->value . "<br/>";
?>
Пример #2 Пример использования Variant в стиле PHP 5
<?php
$v = new VARIANT(42);
print "The type is " . variant_get_type($v) . "<br/>";
print "The value is " . $v . "<br/>";
?>
Причина этого изменения в том, что внутри расширения COM классы VARIANT, COM и DOTNET - являются одним и тем же. и философия этих классов заключается в том, что все свойства и доступ к ним передаются через COM без использования интерфейсов. Новый синтаксис более правильный и простой и большинство удаленных виртуальных свойств не давали представления о происходящем в контексте PHP.
Замечание:
PHP 5 использует гораздо более простой подход к обработке VARIANT; когда возвращается значение или извлекается свойство, VARIANT преобразуется в значение PHP только если есть прямая связь между типами что не приведет к потере информации. Во всех остальных случаях результат вернется в виде экземпляра класса VARIANT. Вы можете принудительно указать PHP конвертировать значения в типы PHP используя оператор приведения типов или же преобразовывать их в строку используя функцию print. Вы можете использовать множество функций класса для арефметических операций без приведения значений к типам PHP с риском потери точности.
Также смотрите variant_get_type().