Обратный объект с zend_soap
-
25-09-2019 - |
Вопрос
Я хотел бы вернуть объект, используя zend_soap. Я также хочу, чтобы объект, указанный в файле WSDL. Но я не могу получить оба работать вместе. Это либо один, либо другой.
1. WSDL работает, но объект не возвращается
Если в PHPDOC мою функцию на сценарии SOAP-сервера я пишу
@return Application_Model_Soap_Test
Я вижу это в файле WSDL
<message name="getPostcodeOut">
<part name="return" type="tns:Application_Model_Soap_Test"/>
</message>
Но когда я запускаю скрипт, он возвращает пустой класс:
stdClass Object
(
)
2. Получить объект, но неправильный WSDL
Если я изменю информацию о PHPDOC функции сервера в
@return mixed Application_Model_Soap_Test
Я получаю объект обратно с информацией:
stdClass Object
(
[name] => Fred
[age] => 40
)
Но файл WSDL не прав
<message name="getPostcodeOut">
<part name="return" type="xsd:anyType"/>
</message>
Есть идеи? Спасибо.
Решение
Вам нужно передать опцию «ClassMap» в клиенте.
Увидеть оба http://www.php.net/manual/en/soapclient.soapclient.php. а также http://www.php.net/manual/en/soapclient.soapclient.php. О параметре «ClassMap» передается в массиве опциона.
В основном это должно быть массив, отображающий ваши классы на классы, определенные как возвращенные объекты в файле WSDL.
Другие советы
Вы пытались отключить кэширование?
В PHP Как вы можете очистить кеш WSDL?
У меня такая же проблема. Каждый запрос, который я сделал, вернул мне пустой stdclass, хотя WSDL был правильным. После отключения кэширования это работало нормально для меня. Дайте это попробовать.