[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: работа с SOAP в php
pveselov
Здравствуйте!

Вопрос нестандартный сразу скажу, т.к. в после недели поисков в гугле и яндексе была найдена лишь одна статься и то, не раскрывающая полностью решение моей проблемы:
единственное что я нашел в Google на эту тему

Если по-русски, то суть следующая:
1) Есть SOAP-сервер, есть WSDL, есть клиент
2) Клиент стучится на сервер запрашивая метод, который возвращает, допустим такой объект:


class Peoples {
/**
* Массив объектов People
*/

public $list;
}

...
class People {
public $Name;
public $Phone;
public $Info;
}


В структуру класса вдаваться не надо (он был придуман только что в качестве примера).

Т.е. примерно такой или любой другой объект будет возвращать метод.

Но SOAP клиент получая такой объект переиначивает его и возвращает как


stdClass Object ( // а должно быть Peoples Object
[list] => Array (
[
0] => stdClass Object ( // а должно быть People Object
[Name] => 'Какое-то имя'
[Phone] => '888-888-888'
[Info] => 'Какая-то информация'
)
[
1] => ..
)
)



Я использую Zend Framework 1.11.11, в частности библиотеки Zend_Soap_Autodiscover для генерации WSDL,
Zend_Soap_Server в качестве сервера и Zend_Soap_Client - в качестве клиента.

Прочитал, что есть некий ClassMap (protected $_classmap, пару методов getClassMap(), setClassMap()) в классе Zend_Soap_Server, но они не используются.

Может у кого-то получилось побороть SOAP чтобы он возвращал именно те объекты которые к нему приходят а не сборище stdClass-ов.

Заранее спасибо!
Oyeme
Есть такой параметр как classmap

Пример

$client = new SoapClient('path/to/wsdl', array(
'classmap' => array('book' => 'book')
););

В zend будет примерно такое-же,будет идти вторым аргументом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.