soap сервер

SOAP расширение на php5. SOAP сервер

В PHP5 есть расширение SOAP (Simple Object Access Protocol). Он позволяет создавать сами web-службы и писать к ним клиенты. Для функционирования SOAP необходимо подключить модуль php_soap.dll в настройках php. В этом файле есть несколько классов:

  • Класс SoapClient – создание SOAP-клиента.
  • Класс SoapServer – создание SOAP-сервера.
  • Класс SoapFault – информация об ошибках.

Класс SoapServer

Рассмотрим работу SoapServer по этапам:

  • Описываем функцию. По сути это пример web-службы:
function getStock($num){
   $stock = array('1'=>;100,'2'=>;200,'3'=>;300); //создадим массив
   if(array_key_exists($num,$stock))
      return $stock[$num];
   else return 0;}
echo getStock("2"); //тестовый запуск на наличие ошибок

Когда от клиента будет приходить сюда запрос, этот файл будет запускаться. И если там будет ошибка php, то сюда эта ошибка не придет. Поэтому перед запуском этого файла лучше вызвать данную функцию, протестировать ее на наличие ошибок. Иначе мы ее не отловим удаленно.

  • Отключаем кэширование WSDL-документа. Т.к. этот документ, который нам надо описать, он кэшируется по умолчанию на 1 час. Поэтому при разработке желательно отключить кэширование.
ini_set("soap.wsdl_cache_enabled","0");
  • Создаем Soap сервер. Это конструктор, т.е. когда объект будет создаваться, этот файл будет зачитан. А там уже описаны все инструкции.
$server = new SoapServer("http://site.ru/stock.wsdl"); //лучше использовать абсолютный путь
  • Добавляем функцию/класс к серверу. Т.е. нам надо объяснить серверу, какую функцию будут запрашивать.
$server->addFunction("getStock");
  • Или можем зарегистрировать класс=обработчик на SOAP-сервере.
$server->setClass("StockService");
  • Запускаем сервер.
$server->handle();

Внимание! Лучше сначала проверить свой сервис локально, чем сразу запускать удаленно. И на время разработки отключите кэширование wsdl-файлов.




Добавить комментарий

Ваш e-mail не будет опубликован.