Возврат объекта с помощью Zend_Soap - PullRequest
0 голосов
/ 09 декабря 2010

Я хотел бы вернуть объект, используя Zend_Soap. Я также хочу объект, указанный в файле WSDL. Но я не могу заставить обоих работать вместе. Это либо один, либо другой.

1. WSDL работает, но объект не возвращается

Если в phpdoc моей функции на скрипте мыльного сервера я пишу

 @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>

Есть идеи? Спасибо.

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Вам необходимо передать переменную параметра 'classmap' в клиенте.

См. И http://www.php.net/manual/en/soapclient.soapclient.php, и http://www.php.net/manual/en/soapclient.soapclient.php о параметре 'classmap', переданном в массиве параметров.

По сути, это должен быть массив, отображающий ваши классы на классы, определенные как возвращаемые объекты в файле WSDL.

0 голосов
/ 14 июня 2012

Вы пытались отключить кеширование?

В PHP как вы можете очистить кэш WSDL?

У меня была такая же проблема.Каждый мой запрос возвращал мне пустой стандартный класс, хотя WSDL был верным.После отключения кеширования у меня все заработало.Попробуйте.

...