Сейчас я делаю что-то вроде этого:
$xmlVar = [..];
$var = new \SoapVar([$xmlVar], SOAP_ENC_OBJECT)
$client->__soapCall('functionName', [$var], null, [$header]);
Теперь, когда я обертываю SoapVar в свой собственный класс (пустой класс, без тела), вот так:
class SVar extends \SoapVar { }
и измените приведенный выше код на:
$xmlVar = [..];
$var = new SVar([$xmlVar], SOAP_ENC_OBJECT)
$client->__soapCall('functionName', [$var], null, [$header]);
Я получаю ошибку: SOAP-ERROR: Encoding: object has no 'someProperty' property
.
Я сравнивал print_r($var)
в обеих ситуациях, и единственным отличием было имя класса.Оба содержат одно и то же значение.Почему упаковка \ SoapVar в пустой объект не работает?Внутренний ли SOAP проверяет точный тип, и если это не совсем SoapVar, он обрабатывает его как StdObject или как?Я попробовал точно такую же вещь на SoapHeader
, и она работает без проблем.