Я вызываю метод COM-объекта, который возвращает объект варианта массива типа 8209 в моем коде PHP.
$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 \servoir.php: 110 Трассировка стека # 0 C: \ xampp \ htdocs \ waterCompany \servoir.php (110): option_cast (объект (вариант), 12) # 1 {основной} брошенный в C: \ xampp \ htdocs \ waterCompany \servoir.php в строке 110.
Я сделал еще немного чтения по варианту здесь http://php.net/manual/en/function.variant-set-type.php но я не добился значительных успехов.
Я использую PHP 5.5.11.
8209 — это 0x2011, который сигнализирует о массиве элементов VT_UI1.
Когда вы хотите преобразовать его, вам нужно создать массив вариантов и скопировать в него каждый элемент старого типа. Когда вы копируете содержимое, вы можете привести каждый элемент VT_UI1 к типу VT_VARIANT.
Не разрешается и никогда не разрешается создавать массивы. Просто попробуйте выучить основы ВАРИАНТОВ
Других решений пока нет …