如果您试图找出可以访问哪些属性和方法,com_print_typeinfo 非常有用。例如,我可以这样做
<?php
$oExplorer = new COM("Shell.Application");
com_print_typeinfo($oExplorer);
?>
第一行显示对象的类(VBScript 称之为“typename”),在我的情况下是 IShellDispatch4。通常情况下,如果您将它作为第二个参数传递给 com_print_typeinfo,您将获得更多返回的方法/属性。因此
<?php
$oExplorer = new COM("Shell.Application");
com_print_typeinfo($oExplorer, "IShellDispatch4");
?>
此外,如果您尝试使用更小的数字后缀(或不使用),您可能会看到更多列出的函数。无论如何,对于 PHP 来说,拥有像 VBScript 那样的 typename 函数将非常有用。例如,如果您遍历 $oExplorer 的窗口,您将获得 IE 和 Explorer 窗口,而 typename 是区分它们之间的简单方法。这是我正在使用的
<?php
function typeName($objCOM) {
if (empty($objCOM)) return "no COM object";
if (gettype($objCOM)!="object") return "not a COM object";
ob_start();
com_print_typeinfo($objCOM);
$typeInfo = ob_get_contents();
ob_end_clean();
$pattern = "/^\\s*class (.*) \\{/";
if (!($matchCnt = preg_match($pattern, $typeInfo, $aMatch))) return "Not found";
return $aMatch[1];
}
?>
来自维也纳的 Csaba Gabor