Создание WSDL при использовании собственного класса PHP SOAP?

Я использую родной класс SOAP в PHP 5, заменив NuSOAP, поскольку родной класс работает быстрее (и разработка NuSOAP, похоже, прекратилась). Однако в PHP 5 SOAP отсутствует возможность генерировать WSDL.

Есть ли у кого-нибудь опыт создания WSDL в PHP? Если это так, пожалуйста, порекомендуйте предпочтительный метод.

Спасибо.


person Community    schedule 20.02.2009    source источник


Ответы (4)


Стюарт,

Если вы или кто-то еще ищет решение этой проблемы, вот что я сделал.

Сначала получите этот скрипт: http://www.phpclasses.org/browse/download/zip/package/3509/name/php2wsdl-2009-05-15.zip

Затем посмотрите на его примеры файлов. После этого я просто нарезал его так, как мне было нужно, потому что я использую codeigniter:

function wsdl(){
  error_reporting(0);
  require_once(APPPATH."/libraries/WSDLCreator.php"); //Path to the library
  $test = new WSDLCreator("Webservice", $this->site."/wsdl");
  //$test->includeMethodsDocumentation(false);

  $test->addFile(APPPATH."/controllers/gds.php");

  $test->addURLToClass("GDS", $this->site);

  $test->ignoreMethod(array("GDS"=>"GDS"));
  $test->ignoreMethod(array("GDS"=>"accessCheck"));

  $test->createWSDL();

  $test->printWSDL(true); // print with headers
 }

Вот и все. Кстати, я использую SoapServer и SoapClient в php5+.

person daynier    schedule 12.10.2010

Генерация WSDL «на лету» — не то, что случается очень часто — это, как правило, поднимает несколько вопросов о стабильности вашего сервиса!

Zend Studio может генерировать WSDL из класса PHP, и есть несколько других подобных инструментов.

Если вам нужно динамически генерировать WSDL, взгляните на библиотеку Zend Framework: Zend_Soap_AutoDiscover

person Ciaran McNulty    schedule 20.02.2009
comment
Zend Soap Autodiscover активно поддерживается. Я использую его, и я доволен этим. - person Francisco R; 05.05.2011
comment
Киаран, я думаю об услугах, которые мы внедрили в компании, в которой я работаю. У нас есть довольно хорошее стабильное приложение и сервисы, но случается так, что новый партнер или существующий требует новой функциональности, которая хороша для нас обоих, поэтому открывать и писать что-то вручную — не совсем хорошая практика. Правильный IHMO — использовать какой-то проверенный и безопасный метод, на который можно положиться, когда случаются такие сценарии — или, например, если меняется ИТ-команда... - person Davis Peixoto; 13.04.2013

Вы можете попробовать следующие варианты:
 — https://code.google.com/p/php-wsdl-creator/ (GPLv3)
https://github.com/piotrooo/wsdl-creator/ (GPLv3)
http://www.phpclasses.org/package/3509-PHP-Generate-WSDL-from-PHP-classes-code.html (подобно BSD)

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

person Pablius    schedule 01.04.2014

Zend_Soap_AutoDiscover — хорошая альтернатива NuSOAP. Но вы также можете создать файл WSDL с нуля, что может быть очень сложно и подвержено ошибкам. Чтобы упростить этот процесс, вы можете использовать IDE для создания файла WSDL для ваших функций PHP и передать его в качестве параметра вашему классу PHP SoapServer. Ознакомьтесь с полным руководством по Как для создания wsdl для собственного класса мыла php

person Osaro Gabriel    schedule 28.03.2014