La clase variant

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

Introducción

El VARIANT es el equivalente COM de zval para PHP; es una estructura que puede contener un valor con un rango de diferentes tipos posibles. La clase variant proporcionada por la extensión COM permite tener más control sobre lo que PHP envía y recibe de COM.

Sinopsis de la Clase

class variant {
/* Métodos */
public __construct(mixed $value = null, int $type = VT_EMPTY, int $codepage = CP_ACP)
}

Ejemplos variant

Ejemplo #1 Ejemplo variant

<?php
$v
= new variant(42);
print
"El tipo es " . variant_get_type($v) . "<br/>";
print
"El valor es " . $v . "<br/>";
?>

Nota:

Al devolver un valor o recuperar una propiedad variant, el variant se convierte en un valor PHP solo cuando hay una correspondencia directa entre los tipos que no produciría una pérdida de información. En todos los demás casos, el valor se devuelve como una instancia de la clase variant. Se puede forzar a PHP a convertir o evaluar el variant como un tipo PHP nativo utilizando los operadores de transtipado explícitamente, o implícitamente a una string al mostrarlo gracias a print. Se puede utilizar la gran variedad de funciones variant para realizar operaciones aritméticas sin forzar una conversión y arriesgarse a una pérdida de datos.

Véase también variant_get_type().

Tabla de contenidos

add a note

User Contributed Notes 2 notes

up
20
darren at dcook dot org
17 years ago
If you are frustrated that print_r($obj) (where $obj is something returned from a call to a function on a COM object) does not return anything helpful, and that variant_get_type($obj) just returns a number, the function you are actually after is:
com_print_typeinfo($obj);

It lists all functions, variables, their types in a human-readable (well, programmer-readable) format. Lovely!
up
4
richard dot quadling at carval dot co dot uk
22 years ago
With thanks to Harald Radi and Wez Furlong.

Some VBA functions have optional parameters. Sometimes the parameters you want to pass are not consecutive.

e.g.

GoTo What:=wdGoToBookmark, Name="BookMarkName"
GoTo(wdGoToBookmark,,,"BookMarkName)

In PHP, the "blank" parameters need to be empty.

Which is ...

<?php
// Some servers may have an auto timeout, so take as long as you want.
set_time_limit(0);

// Show all errors, warnings and notices whilst developing.
error_reporting(E_ALL);

// Used as a placeholder in certain COM functions where no parameter is required.
$empty = new VARIANT();

// Load the appropriate type library.
com_load_typelib('Word.Application');

// Create an object to use.
$word = new COM('word.application') or die('Unable to load Word');
print
"Loaded Word, version {$word->Version}\n";

// Open a new document with bookmarks of YourName and YourAge.
$word->Documents->Open('C:/Unfilled.DOC');

// Fill in the information from the form.
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourName'); // Note use of wdGoToBookmark, from the typelibrary and the use of $empty.
$word->Selection->TypeText($_GET['YourName']);

$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourAge');
$word->Selection->TypeText($_GET['YourAge']);

// Save it, close word and finish.
$word->Documents[1]->SaveAs("C:/{$_GET['YourName']}.doc");
$word->Quit();
$word->Release();
$word = null;
print
"Word closed.\n";
?>

The example document is ...

Hello [Bookmark of YourName], you are [Bookmark of YourAge] years old.

and it would be called ...

word.php?YourName=Richard%20Quadling&YourAge=35

Regards,

Richard.
To Top