Загрузка данных
 
Логин:   Пароль:      
Регистрация   Забыли пароль?

15 горячих:

Закрыть
Загрузить:
Указать:
Выравнивание:
Альт

SOAP, генерация прокси класса

Вот такой протокол

SOAP — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался, в основном, для реализации удалённого вызова процедур (RPC), а название было аббревиатурой: Simple Object Access Protocol — простой протокол доступа к объектам. Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.




Итак, делаем proxy-class

Так вот, столкнулся с задачей, где нужно использовать вебсервис.
Вообще говоря разработчики рнр5 максимально упростили работу с сервисом.
Ввели SoapClient и использовать проще простого.

  1. <?
  2. $cl = new SoapClient("wsdl");
  3. $cl->functionname();
  4. ...

Все ничего, но надо знать имена функции это раз.
Второе, программируя в какой-нить IDE есть автокомлит, который показывает функции класса
Я начал копать в сторону этого, потому как на память помнить функции глупо.

Но к сожалению ничего не нашел.
Порылся в pear но там по сути нет ничего чтобы мне помогло.

В итоге решил написать скрипт, который бы на основании заданного WSDL создает класс с методами, параметрами и phpDoc для удобства.


Для примера задаем простейший WSDL файл и посмотри как бы делали просто и через генератор класса.

Обычно мы пишем (пример взят отсюда):

  1. <?php
  2. $cl = new SoapClient("http://www.freewebs.com/jimmy_cheng/CurrencyExchangeService.wsdl");
  3. echo $cl->getRate("us", "russian");
  4. ?>

Удобно, не вопрос. Но узнать ВСЕ функции WSDL тяжко.

А теперь прогоним этот же wsdl и получим класс.

В итоге получили:



Удобно? Да. Причем эта фича есть давно в VS.

А вот для примера задаем WSDL для проверки валидности email

  1. $WSDL   = "http://ws.cdyne.com/emailverify/Emailvernotestemail.asmx?wsdl";


а в IDE получился вот такой комплит



Не знаю как вам, а мне этой фичи нехватает.

Уважаемый ALL, подскажите, возможно я создаю велосипед, но я не встречал создания прокси-класса на РНР?

Есть ли такой инструмент?

Потому что на данный момент приходится доделывать скрипт и придумывать костыли чтобы все работало хорошо.

Спасибо за внимание, жду ответов — Имеет ли смысл двигаться в этом направлении? или уже есть такое?

Кросспост

UPD WSDL ws.cdyne.com/emailverify/Emailvernotestemail.asmx?wsdl содержит больше функций, я знаю, но в силу того, что РНР не поддерживает перегрузку функций, то в данный момент я игнорирую повторы. В дальнейшем введу fucn1, func2, func3 которые будут по сути func но с разными параметрами. Спасибо за понимание
Метки: soap
highw 18 мая 2009 00:52 комментариев: 1
:) 1,19 :(

Комментарии:
Насколько я помню, В Zend IDE есть возможность генерировать классы на основе WSDL.
golotyuk   7 июня 2009 20:10 Комментировать может только авторизованный пользователь
:) 0 :( #
Только зарегистрированные пользователи могут оставлять комментарии.
© 2008 | О сайте | Инструкции | Обратная связь
© Powered by BigStreet

Работа с БД:
 Время - 0.0572
 Запросов - 7
Работа с кэшем:
 Время - 0.0045
 Записей - 2
 Прочтений - 5
Общее время:
 0.1535