Класс VARIANT

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

Описание

VARIANT - это эквивалент zval для COM; это структура, которая может содержать значения различных допустимых типов. Класс VARIANT входит в расширение COM и позволяет более полно контролировать значения передаваемые от PHP к COM и обратно.

$vVar = new VARIANT($var)

Methods

VARIANT::__construct ([ mixed $value [, int $type [, int $codepage ]]] )

Конструктор класса VARIANT. Параметры:

value
начальное значение. Если не задано или задано как NULL, то будет создан объект VT_EMPTY.
type
задает тип контента объекта VARIANT. Одна из констант VT_XXX Предопределенные константы. В PHP до версии 5, было необходимо принудительно передавать объект по ссылке на битовое ИЛИ VT_BYREF с type. В PHP 5, этот хак не поддерживается; PHP 5определяет значения передаваемые по ссылке автоматически; они даже не должны передаваться как объекты VARIANT. Дополнительную информацию по типам VARIANT читайте в библиотеке MSDN.
codepage
Определяет кодировку используемую при преобразовании строк в Unicode. Смотрите описание параметра с таким же именем для COM.

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