PHP Conference Japan 2024

variant 类

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

简介

VARIANT 是 COM 中 PHP zval 的等价物;它是一个结构,可以包含具有各种不同可能类型的值。COM 扩展提供的 variant 类允许您更好地控制 PHP 向 COM 传递和从 COM 接收值的方式。

类概要

class variant {
/* 方法 */
public __construct(混合 $value = null, 整数 $type = VT_EMPTY, 整数 $codepage = CP_ACP)
}

variant 示例

示例 #1 variant 示例

<?php
$v
= new variant(42);
print
"类型是 " . variant_get_type($v) . "<br/>";
print
"值是 " . $v . "<br/>";
?>

注意:

在返回值或获取 variant 属性时,只有当类型之间存在不会导致信息丢失的直接映射时,才会将 variant 转换为 PHP 值。在所有其他情况下,结果将作为 variant 类的实例返回。您可以强制 PHP 将 variant 转换为或计算为 PHP 本机类型,方法是显式使用强制转换运算符,或通过print隐式强制转换为字符串。您可以使用各种 variant 函数对 variant 执行算术运算,而无需强制转换或冒数据丢失的风险。

另请参阅 variant_get_type()

目录

添加注释

用户贡献的注释 2 个注释

darren at dcook dot org
17 年前
如果您对 print_r($obj)(其中 $obj 是从对 COM 对象上的函数的调用返回的内容)没有返回任何有用的内容感到沮丧,并且 variant_get_type($obj) 仅返回一个数字,那么您实际上需要的函数是
com_print_typeinfo($obj);

它以人类可读(好吧,程序员可读)的格式列出了所有函数、变量及其类型。太棒了!
richard dot quadling at carval dot co dot uk
21 年前
感谢 Harald Radi 和 Wez Furlong。

某些 VBA 函数具有可选参数。有时您想要传递的参数不是连续的。

例如

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

在 PHP 中,"空白" 参数需要为空。

也就是...

<?php
// 某些服务器可能具有自动超时,因此需要尽可能长的时间。
set_time_limit(0);

// 在开发过程中显示所有错误、警告和通知。
error_reporting(E_ALL);

// 用作某些 COM 函数中不需要参数时的占位符。
$empty = new VARIANT();

// 加载相应的类型库。
com_load_typelib('Word.Application');

// 创建要使用的对象。
$word = new COM('word.application') or die('无法加载 Word');
print
"加载了 Word,版本 {$word->Version}\n";

// 使用书签 YourName 和 YourAge 打开一个新文档。
$word->Documents->Open('C:/Unfilled.DOC');

// 填写表单中的信息。
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourName'); // 请注意使用 wdGoToBookmark(来自类型库)和使用 $empty。
$word->Selection->TypeText($_GET['YourName']);

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

// 保存、关闭 Word 并完成。
$word->Documents[1]->SaveAs("C:/{$_GET['YourName']}.doc");
$word->Quit();
$word->Release();
$word = null;
print
"Word 已关闭。\n";
?>

示例文档是...

您好 [书签 YourName],您 [书签 YourAge] 岁。

并且它将被称为...

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

此致,

Richard。
To Top