如果您对 print_r($obj)(其中 $obj 是从 COM 对象的函数调用中返回的内容)没有返回任何有用的内容感到沮丧,并且 variant_get_type($obj) 只是返回一个数字,那么您真正需要的是
com_print_typeinfo($obj);
它以人类可读(好吧,程序员可读)的格式列出所有函数、变量及其类型。太棒了!
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
VARIANT 是 COM 中 PHP zval 的等效项;它是一个结构,可以包含具有各种不同可能类型的值。COM 扩展提供的 variant 类允许您更详细地控制 PHP 向 COM 传递值的方式。
示例 #1 variant 例子
<?php
$v = new variant(42);
print "The type is " . variant_get_type($v) . "<br/>";
print "The value is " . $v . "<br/>";
?>
注意:
在返回一个值或获取 variant 属性时,只有当类型之间存在直接映射并且不会导致信息丢失时,才会将 variant 转换为 PHP 值。在所有其他情况下,结果将作为 variant 类的实例返回。您可以通过显式使用强制转换运算符或通过隐式强制转换为字符串(使用 print 打印)来强制 PHP 将 variant 转换为 PHP 原生类型或将其评估为 PHP 原生类型。您可以使用多种 variant 函数对 variant 执行算术运算,而无需强制转换或冒着数据丢失的风险。
另请参见 variant_get_type()。
如果您对 print_r($obj)(其中 $obj 是从 COM 对象的函数调用中返回的内容)没有返回任何有用的内容感到沮丧,并且 variant_get_type($obj) 只是返回一个数字,那么您真正需要的是
com_print_typeinfo($obj);
它以人类可读(好吧,程序员可读)的格式列出所有函数、变量及其类型。太棒了!
感谢 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('Unable to load Word');
print "Loaded Word, version {$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 closed.\n";
?>
示例文档是 ...
您好 [YourName 的书签],您 [YourAge 的书签] 岁。
并且它将被称为 ...
word.php?YourName=Richard%20Quadling&YourAge=35
此致,
Richard。