(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().