(PHP 4 >= 4.1.0, PHP 5, PHP 7)
La clase VARIANT es un equivalente de COM para el PHP zval; es una estructura que puede contener un valor con un rango de diferentes tipos posibles. La clase VARIANT suministrada por la extensión COM, permite tener un mayor control sobre el modo en que PHP pasa los valores hacia y desde COM.
$vVar = new VARIANT($var)
constructor de clase VARIANT. Parámetros:
NULL
se creará un objeto vacío VT_EMPTY.
VT_XXX
Constantes predefinidas.
En versiones PHP anteriores a PHP 5, se puede forzar a PHP para que pase un objeto
VARIANT por referencia, combinando VT_BYREF
con el operador OR y
el parámetro type
. En PHP 5, este hack no está
soportado; en lugar de eso, PHP 5 puede detectar los parámetros pasados por referencia
automáticamente; ni siquiera es necesario pasarlos como objetos VARIANT.
Consultar la biblioteca MSDN para información adicional
sobre el tipo VARIANT.
Las versiones PHP anteriores a PHP 5 definen un número de propiedades virtuales (no documentadas) para las instancias de la clase VARIANT; estas propiedades han sido eliminadas en PHP 5 en favor de una sintaxis más natural; estas diferencias se ilustran mejor con el siguiente ejemplo:
Ejemplo #1 Ejemplo de una clase VARIANT, utilizada en PHP 4.x
<?php
$v = new VARIANT(42);
print "El tipo es " . $v->type . "<br/>";
print "El valor es " . $v->value . "<br/>";
?>
Ejemplo #2 Ejemplo de una clase VARIANT, utilizada en PHP 5
<?php
$v = new VARIANT(42);
print "El tipo es " . variant_get_type($v) . "<br/>";
print "El valor es " . $v . "<br/>";
?>
La razón para este cambio es que, internamente, la extensión COM ve a las clases VARIANT, COM y DOTNET como la misma cosa, y la filosofía de diseño para estas clases es que todos los accesos a las propiedades y los miembros se transmiten a través de COM sin ninguna interferencia. La nueva sintaxis es más natural y requiere menos esfuerzo, y muchas de las propiedades virtuales eliminadas ya no tienen sentido en un contexto PHP.
Nota:
PHP 5 toma una aproximación mucho más simple en la gestión de VARIANTs; cuando se devuelve un valor o se carga una propiedad VARIANT, ésta se convierte en un valor PHP únicamente cuando hay un mapeo directo entre los tipos de tal forma que no se pierda información. En todos los otros casos, el resultado es devuelto como una instancia de la clase VARIANT. Se puede forzar a PHP para convertir o evaluar la clase VARIANT como un tipo nativo PHP utilizando un operador para clasificarla explícitamente, o implícitamente como un string con la función print. Es posible utilizar el amplio rango de funciones VARIANT para realizar operaciones aritméticas en VARIANTS sin forzar una conversión o arriesgarse a una pérdida de información.
Ver también la función variant_get_type().