我正在调用一个COM对象方法,该方法在我的PHP代码中返回类型8209的数组变体对象。
$com_VArray = $com_Object->objectMethod; //Is a 8209 variant object
我希望最终将转换后的VT_VARIANT对象作为另一个COM对象方法的值传递,该方法要求其输入为VT_VARIANT [12]。
我通过发出以下内容将$ com_VArray转换为VT_VARIANT对象变体类型
$obj_VT_VARIANT = variant_cast($com_VArray, VT_VARIANT);
然后我得到以下错误
致命错误:未捕获的异常' com_exception'消息'变体类型转换失败:类型不匹配。'在C:\ xampp \ htdocs \ waterCompany \ reservoir.php:110堆栈跟踪#0 C:\ xampp \ htdocs \ waterCompany \ reservoir.php(110):variant_cast(对象(变体),12)#1 {main}抛出在第110行的C:\ xampp \ htdocs \ waterCompany \ reservoir.php中。
我已经在variant_cast上做了更多的阅读http://php.net/manual/en/function.variant-set-type.php,但我没有取得太大的进展。
我使用的是PHP 5.5.11。
答案 0 :(得分:0)
8209是0x2011,表示VT_UI1元素的数组。
当您想要转换它时,您需要创建一个Variants数组并将旧类型的每个元素复制到其中。复制内容时,可以将每个VT_UI1元素转换为VT_VARIANT类型。
它不是也绝不允许投射数组。试着学习VARIANTs的基础