PHP 8.1.31 Released!

Classe variant

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

Introdução

A VARIANT é o equivalente do COM ao zval do PHP; é uma estrutura que pode conter um valor com uma variedade de diferentes tipos possíveis. A classe variant fornecida pela extensão COM permite mais controle sobre a maneira como o PHP passa valores de e para o COM.

Resumo da classe

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

Exemplos de variant

Exemplo #1 Exemplo de variant

<?php
$v
= new variant(42);
print
"The type is " . variant_get_type($v) . "<br/>";
print
"The value is " . $v . "<br/>";
?>

Nota:

Ao retornar um valor ou buscar uma propriedade variant, a variant é convertida em um valor PHP somente quando há um mapeamento direto entre os tipos que não resultaria em perda de informação. Em todos os outros casos, o resultado é retornado como uma instância da classe variant. Pode-se forçar o PHP a converter ou avaliar a variant como um tipo nativo do PHP usando um operador de conversão explicitamente, ou convertendo implicitamente para uma string usando a função print. Pode-se usar a ampla gama de funções da variant para realizar operações aritméticas em variants sem forçar uma conversão ou correr o risco de perda de dados.

Consulte também variant_get_type().

Índice

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
19
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
3
richard dot quadling at carval dot co dot uk
21 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