VARIANT Klasse

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

Einführung

Die VARIANTe ist COMs Pendant des PHP zvals; es ist eine Struktur, die einen Wert einer Reihe unterschiedlicher möglicher Typen enthalten kann. Die VARIANT-Klasse, die durch die COM Extension zur Verfügung gestellt wird, erlaubt es, mehr Kontrolle über die Art, wie PHP Werte an COM übergibt und von diesem empfängt, zu haben.

Klassenbeschreibung

VARIANT {
/* Methoden */
__construct ([ mixed $value = NULL [, int $type = VT_EMPTY [, int $codepage = CP_ACP ]]] )
}

VARIANT-Beispiele

Beispiel #1 Variant-Beispiel

<?php
$v 
= new VARIANT(42);
print 
"Der Typ ist " variant_get_type($v) . "<br/>";
print 
"Der Wert ist " $v "<br/>";
?>

Hinweis:

Wenn ein Wert zurückgegeben, oder eine variante Eigenschaft abgerufen wird, wird die Variante nur in einen PHP-Wert konvertiert, falls es eine direkte, verlustlose Zuordnung zwischen den Typen gibt. In allen anderen Fällen wird das Ergebnis als Exemplar der VARIANT-Klasse zurückgegeben. Es ist möglich PHP zu zwingen, die Variante in einen nativen Typ zu konvertieren, entweder durch explizite Verwendung eines Typumwandlungs-Operators, oder durch das printen implizit in einen String zu wandeln. Die umfangreichen Variant-Funktionen können verwendet werden, um arithmetische Operationen auf Varianten durchzuführen, ohne eine Konvertierung zu erzwingen, oder Datenverlust zu riskieren.

Siehe auch variant_get_type().

Inhaltsverzeichnis

add a note add a note

User Contributed Notes 2 notes

up
20
darren at dcook dot org
12 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
16 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